Работа с реестром. Класс Registry

Последнее обновление: 31.10.2015

Ключевым местом для хранения конфигурационных настроек в ОС Windows является реестр. Для просмотра реестра мы можем воспользоваться утилитой regedit. При запуске данная утилита отображает в графическом окне в древовидном виде все содержимое реестра:

Просмотр реестра в regedit

Реестр хранит набор ключей, у которых имеется определенное значение. Ключи также могут содержать другие ключи.

Всего имеется пять ключей верхнего уровня, предназначенных для хранения различной информации:

  • HKEY_CLASSES_ROOT: хранит информацию об используемых в ос файлах, какие программы открывают тот или иной тип файлов, а также информацию о компонентах COM

  • HKEY_CURRENT_USER: хранит настройки для текущего пользователя в системе

  • HKEY_LOCAL_MACHINE: хранит информацию обо всех установленных программах

  • HKEY_USERS: хранит настройки для всех пользователей

  • HKEY_CURRENT_CONFIG: хранит информацию о конфигурации установленного оборудования

  • HKEY_DYN_DATA: хранит различные текущие данные

  • HKEY_PERFORMANCE_DATA: хранит информацию о производительности приложений

Для управления регистром в пространстве имен Microsoft.Win32 имеются два класса: Registry и RegistryKey.

Класс Registry позволяет получить доступ к ключам верхнего уровня реестра. А класс RegistryKey представляет отдельный ключ реестра.

При использовании этих классов необходимо учитывать древовидную иерархическую структуру реестра. Так получение ключа верхнего уровня HKEY_LOCAL_MACHINE, который содержит информацию об установленном на локальной машине программном обеспечении, происходит следующим образом:

RegistryKey localMachineKey = Registry.LocalMachine;

Класс Registry содержит еще ряд статических свойств, каждое из которых представляет соответствующий ключ верхнего уровня:

  • Registry.ClassesRoot

  • Registry.CurrentConfig

  • Registry.CurrentUser

  • Registry.DynData

  • Registry.Users

  • Registry.PerformanceData

Для управления ключами в реестре класс RegistryKey определяет ряд свойств и методов. Основные из них:

  • Name: возвращает имя ключа реестра

  • Close(): закрывает ключ

  • CreateSubKey(): создает вложенный ключ, если он не существует

  • DeleteSubKey(): удаляет вложенный ключ

  • DeleteValue(): удаляет значение ключа

  • GetSubKeyNames(): возвращает коллекцию имен вложенных ключей

  • GetValue(): возвращает значение ключа

  • OpenSubKey(): открывает вложенный ключ

  • SetValue(): устанавливает значение ключа

Создадим свой ключ в реестре:

RegistryKey currentUserKey = Registry.CurrentUser;
RegistryKey helloKey= currentUserKey.CreateSubKey("HelloKey");
helloKey.SetValue("login", "admin");
helloKey.SetValue("password", "12345");
helloKey.Close();

После этого в реестре мы сможем увидеть добавленный ключ и два его значения:

Работа с реестром в C# и .NET

Создадим в ранее созданном ключе вложенный ключ:

RegistryKey currentUserKey = Registry.CurrentUser;
RegistryKey helloKey= currentUserKey.OpenSubKey("HelloKey", true);
RegistryKey subHelloKey = helloKey.CreateSubKey("SubHelloKey");
subHelloKey.SetValue("val", "23");
subHelloKey.Close();
helloKey.Close();

Значение true в вызове OpenSubKey("HelloKey", true); позволяет открывать ключ с возможностью записи в него.

Считаем сохраненные в реестре значения:

RegistryKey currentUserKey = Registry.CurrentUser;
RegistryKey helloKey= currentUserKey.OpenSubKey("HelloKey");

string login = helloKey.GetValue("login").ToString();
string password = helloKey.GetValue("password").ToString();
helloKey.Close();

Console.WriteLine(login);
Console.WriteLine(password);

И в конце удалим значения из ключа и сам ключ из реестра:

RegistryKey currentUserKey = Registry.CurrentUser;
RegistryKey helloKey= currentUserKey.OpenSubKey("HelloKey", true);
// удаляем вложенный ключ
helloKey.DeleteSubKey("SubHelloKey");
// удаляем значение из ключа
helloKey.DeleteValue("login");
helloKey.Close();
// удаляем сам ключ
currentUserKey.DeleteSubKey("HelloKey");
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850