Programování

Jak přistupovat k registru Windows pomocí C #

Microsoft .Net vám umožňuje programový přístup k registru Windows pro ukládání a načítání dat. Registr Windows je hierarchická databáze, která se skládá ze sbírky klíčů, dílčích klíčů, předdefinovaných klíčů, kopřiv a hodnotových položek a lze ji použít k ukládání dat specifických pro systém nebo pro konkrétní aplikaci. MSDN uvádí: „Registr funguje jako centrální úložiště informací pro operační systém a aplikace v počítači.“

Můžete využít výhod registru Windows k uložení metadat konfigurace vašich aplikací, abyste je v případě potřeby mohli později načíst.

Registr Windows ukládá následující typy informací hierarchicky.

  1. Informace o profilu uživatele
  2. Informace o hardwaru vašeho systému
  3. Nastavení vlastností
  4. Informace o nainstalovaných programech ve vašem systému

Pamatujte, že při manipulaci s registrem Windows byste měli být velmi opatrní. Před provedením jakýchkoli změn je vhodné zálohovat registr, abyste v případě potřeby tyto změny mohli vrátit zpět. Podle následujících pokynů můžete vytvořit zálohu registru systému Windows.

  1. Na Start vyberte Spustit
  2. Zadejte Regedit a stisknutím klávesy Enter vyvolejte Editor registru Windows
  3. Nyní klikněte na Soubor -> Exportovat
  4. V dialogovém okně „Uložit jako“ zadejte název
  5. Vyberte konkrétní větev nebo možnost „Vše“ a exportujte celé informace o registru
  6. Klikněte na Uložit

Informace o vašem registru budou uloženy do souboru REG s názvem, který jste zadali. Nyní můžete bezpečně programově manipulovat s databází registru.

Práce s registrem Windows v C #

Z registru systému Windows můžete programově číst, zapisovat a mazat klíče, podklíče a hodnoty. Můžete považovat klíče registru za složky ve vašem systému Windows. Všimněte si, že klíč může mít dílčí klíče - podobně může složka obsahovat podsložky uvnitř. Chcete-li pracovat s registrem Windows pomocí C #, můžete využít třídu Registry v oboru názvů Microsoft.Win32.

Podívejme se nyní na nějaký kód. V této části prozkoumáme, jak můžeme vytvářet, číst nebo mazat podklíče z registru Windows pomocí C #.

Chcete-li vytvořit nový podklíč, můžete využít metodu CreateSubKey, jak je znázorněno níže.

Registry.CurrentUser.CreateSubKey (@ "SOFTWARE \");

Metoda CreateSubKey vytvoří nový dílčí klíč a vrátí jej - návratový typ je RegistryKey. Následující fragment kódu ukazuje, jak můžete vytvořit nový dílčí klíč s názvem a uložit do něj klíčové hodnoty.

pomocí (klíč RegistryKey = Registry.CurrentUser.CreateSubKey (@ "SOFTWARE \"))

           {

key.SetValue ("Klíč 1", "Hodnota 1");

key.SetValue ("Klíč 2", "Hodnota 2");

key.Close ();

           }  

Následující metodu lze použít ke čtení hodnoty z podklíče.

statický řetězec ReadSubKeyValue (řetězec subKey, řetězec klíč)

       {

string str = string.Empty;

pomocí (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (subKey))

           {

if (registryKey! = null)

               {

str = registryKey.GetValue (klíč). ToString ();

registryKey.Close ();

               }

           }

návrat str;

       }

Metoda ReadSubKeyValue přijímá podklíč a klíč jako parametr a vrací z něj hodnotu. Zde je způsob, jak můžete zavolat metodu ReadSubKeyValue.

static void Main (řetězec [] args)

       {

řetězec subKey = @ "SOFTWARE \";

string str = ReadSubKeyValue (subKey, "Klíč 1");

Console.WriteLine (str);

Console.Read ();

       }

Subklíč můžete také odstranit pomocí statické metody DeleteSubKey. Následující výpis kódu ukazuje, jak to můžete udělat.

static bool DeleteKey (řetězec KeyName)

       {

Snaž se

           {

Registry.CurrentUser.DeleteSubKey (KeyName);

návrat true;

           }

chytit

           {

návrat false;

           }

       }

Výše uvedená metoda vrací true, pokud je odstranění dílčího klíče úspěšné, jinak false. Možná budete chtít zkontrolovat, zda dílčí klíč existuje, než se ho pokusíte odstranit - tím způsobem jsou změny vyvolávaných výjimek minimální. Nechám na vás, abyste výše uvedený kód upravili tak, aby tuto změnu zapracoval.

Můžete také načíst všechny dílčí klíče konkrétního klíče pomocí metody GetSubKeyNames třídy RegistryKey. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

statický seznam GetChildSubKeys (klíč řetězce)

       {

List lstSubKeys = new List ();

Snaž se

          {

pomocí (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey (klíč))

               {

if (! (registryKey == null))

                   {

string [] temp = registryKey.GetSubKeyNames ();

foreach (string str in temp)

                       {

lstSubKeys.Add (str);

                       }

                   }

               }

           }

chytit

           {

// Sem napište svůj vlastní kód pro zpracování výjimek

           }

vrátit lstSubKeys;

       }

Pokud chcete použít metodu GetChildSubKeys a načíst všechny dílčí klíče konkrétního klíče, můžete napsat následující kód.

Seznam lstSubKeys = GetChildSubKeys (subKey);