Параметры реестра Windows
В прошлом разделе мы научились создавать разделы и подразделы реестра, используя язык c#, теперь научимся создавать параметры и устанавливать им значения.
Для работы с параметрами рекомендуется применять методы класса RegistryKey, хотя класс Registry, так же содержит два метода для работы с параметрами: GetValue и SetValue класса Registry, но они работаю медленнее, аналогичных методов класса RegistryKey и не рекомендуются к использованию.
Как создавать параметры реестра используя язык c#
Для создания параметра реестра и занесения в него значения используется метод класса RegistryKey SetValue
Данный метод принимает два параметра: имя параметра и значение.
И так в подразделе Вася создадим параметр age, типа DWORD и установим ему значение 20.
static void regSetValue() { string nameSubKey = "Friends"; string subKeyVasya = "Вася"; string nameParam = "age"; int value = 20; using(RegistryKey regKey = Registry.CurrentUser.OpenSubKey( nameSubKey,false).OpenSubKey(subKeyVasya,true)) { if (regKey != null) { regKey.SetValue(nameParam, value); } } }
По умолчанию создается параметр типа DWORD, который позволяет хранить значения типа integer. Если необходимо изменить тип, то используем перегрузку метода на 3 параметра. Сначала указываете раздел реестра, затем значение реестра и тип параметра.
Выбор типа осуществляется при помощи класса RegistryValueKind , который является перечислением(enum).
Пример:
SetValue(nameParam,value, RegistryValueKind.String);
Так же можно указывать и сразу же полный путь к нужному подразделу, например: Friends\Вася
static void regSetValue() { string nameSubKey = @"Friends\Вася"; string nameParam = "age"; int value = 20; using (RegistryKey regKey = Registry.CurrentUser.OpenSubKey( nameSubKey,true)) { if (regKey != null) { regKey.SetValue(nameParam, value); } } }
Результат
Добавим новые параметры реестра всем остальным друзьям и установим им значения.
static void regSetSeveralValue() { string nameSubKey = "Friends"; string nameParam = "age"; string[] arrayName = {"Маша", "Саша", "Даша", "Паша", "Сергей"}; RegistryKey regKey = Registry.CurrentUser; int[] arrayValues = { 21, 22, 23, 24, 25 }; for (int i = 0; i < arrayName.Length; i++) { using (regKey = Registry.CurrentUser.OpenSubKey( nameSubKey, false).OpenSubKey(arrayName[i], true)) { if (regKey != null) { regKey.SetValue(nameParam, arrayValues[i]); } else { break; // или continue } } } }
Ниже несколько примеров, которые могут пригодиться при работе с реестром.
Получить все подразделы у подраздела «Friends»
static void regGetSubKeyNames() { string subKey = "Friends"; string[] arraySubKeyNames = null; using(RegistryKey regKey = Registry.CurrentUser.OpenSubKey( subKey)) { if (regKey != null) { arraySubKeyNames = regKey.GetSubKeyNames(); } } foreach (string item in arraySubKeyNames) { Console.WriteLine(item); }
Результат
Получить возвраcт Васи
private static void regGetAgeVasya() { string subKey = @"Friends\Вася"; string value; using (RegistryKey regKey = Registry.CurrentUser.OpenSubKey( subKey)) { if (regKey != null) { value = regKey.GetValue("age").ToString(); } Console.WriteLine(value); //результат 20 } }
Добавим Васе ещё несколько параметров и значений вручную или можете создать метод и программным путем добавить соответствующие записи.
Результат
А теперь получим все параметры реестра и значения подраздела «Вася», для этого воспользуемся методом GetValue класса RegistryKey, который возвращает строковый массив всех значений.
private static void regGetSubKeyValues() { string subKey = @"Friends\Вася"; string[] arraySubKeyNames = null; string[] arrayValues = null; using(RegistryKey regKey = Registry.CurrentUser.OpenSubKey( subKey)) { if (regKey != null) { //Получаем все параметры, которые есть у Васи arraySubKeyNames = regKey.GetValueNames(); } //Задаем размерность массива значений arrayValues = new string[arraySubKeyNames.Length]; // Получаем значение каждого параметра for (int i = 0; i < arraySubKeyNames.Length; i++) { arrayValues[i] = regKey.GetValue(arraySubKeyNames[i]) .ToString(); } } //Вывод результатов for (int i = 0; i < arraySubKeyNames.Length; i++) { Console.WriteLine("Параметр: {0} = {1}", arraySubKeyNames[i], arrayValues[i]); } }
Результат
Читайте также: