параметры реестра Windows

параметры реестра 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);
}

Результат

метод GetSubKeyName

Получить возвра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]);
}
}

Результат

метод GetValue

Читайте также:

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*