Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


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

Результат

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

Добавим новые параметры реестра всем остальным друзьям и установим им значения.


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


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

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


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices