#Samurai
Умник
Сегодня я расскажу о том, как работать с реестром на языке программирования C#.
Реестр Windows (англ. Windows Registry), или системный реестр — иерархически построенная база данных параметров и настроек в большинстве операционных систем Microsoft Windows.
Иными словами реестр - это база данных, которая хранит себе различные параметры и настройки.
[HR][/HR]
По традиции подключаем директиву для работы.
[HR][/HR]
Аргументы: путь к секции, название параметра, значение, (опционально) тип значения
Здесь мы записываем в строковую константу KeyPaty путь к секции, которую мы хотим создать
HKEY_CURRENT_USER это имя раздела, в котором будет создана секция, в данном случае это раздел, в котором хранятся настройки и параметры для текущего пользователя, список всех разделов и их вложенных секций можно увидеть в редакторе реестра Windows, открыть его можно командой regedit (Либо ввести в меню пуск regedit, либо выполнить эту команду с помощью сочетания клавиш Win + R, либо ввести её в командной строке Windows)
Записываем значение в указанном в keyPath пути к секции, где TestVariable - название параметра, а 123456 - его значение, если не указать название параметра, то он запишется в Default.
Примечания:
• Константу/переменную создавать вовсе не обязательно, достаточно в методе Registry.SetValue вместо keyPath напрямую указать путь.
• Если указанной секции не существует в разделе, то она будет создана
• Если такой параметр уже существует в секции, то его значение будет перезаписано и тип будет изменён, если указан.
• Для записи в качестве значения переменных среды необходимо использовать тип данных RegistryValueKind.ExpandString. Пример:
[HR][/HR]
Аргументы: полный путь к разделу реестра, название параметра, стандартное значение
Этот участок кода я уже описал ранее
Считывание значения с параметра TestVariable, расположенном в разделе(или же секции), указанном в keyPath.
None - значение, которое вернёт метод в случае неудачи при считывании значения
[HR][/HR]
Следовательно, нам необходимо получить значение параметра PlayerName, который расположен по пути HKEY_CURRENT_USER\Software\SAMP
Ну и выводим наши данные
или
или
Пример:
И вот наш результат:
Что такое реестр?
Полагаю, что ты, юзернейм, открыл эту тему уже зная, что такое реестр и как ты будешь применять информацию из урока, а если же нет, то:Реестр Windows (англ. Windows Registry), или системный реестр — иерархически построенная база данных параметров и настроек в большинстве операционных систем Microsoft Windows.
Иными словами реестр - это база данных, которая хранит себе различные параметры и настройки.
[HR][/HR]
По традиции подключаем директиву для работы.
PHP:
using Microsoft.Win32;
Запись данных в реестр
Для записи значения используется метод SetValue из класса RegistryАргументы: путь к секции, название параметра, значение, (опционально) тип значения
PHP:
const string keyPath = @"HKEY_CURRENT_USER\TestSection";
Registry.SetValue(keyPath, "TestVariable", 123456);
PHP:
const string keyPath = @"HKEY_CURRENT_USER\TestSection";
HKEY_CURRENT_USER это имя раздела, в котором будет создана секция, в данном случае это раздел, в котором хранятся настройки и параметры для текущего пользователя, список всех разделов и их вложенных секций можно увидеть в редакторе реестра Windows, открыть его можно командой regedit (Либо ввести в меню пуск regedit, либо выполнить эту команду с помощью сочетания клавиш Win + R, либо ввести её в командной строке Windows)
PHP:
Registry.SetValue(keyPath, "TestVariable", 123456);
Примечания:
• Константу/переменную создавать вовсе не обязательно, достаточно в методе Registry.SetValue вместо keyPath напрямую указать путь.
• Если указанной секции не существует в разделе, то она будет создана
• Если такой параметр уже существует в секции, то его значение будет перезаписано и тип будет изменён, если указан.
• Для записи в качестве значения переменных среды необходимо использовать тип данных RegistryValueKind.ExpandString. Пример:
PHP:
Registry.SetValue(keyPath, "TestPath", "%path%", RegistryValueKind.ExpandString);
Чтение данных
Для чтения данных из секции используется метод GetValue из класса RegistryАргументы: полный путь к разделу реестра, название параметра, стандартное значение
PHP:
const string keyPath = @"HKEY_CURRENT_USER\TestSection";
Registry.GetValue(keyPath, "TestVariable", "None");
PHP:
const string keyPath = @"HKEY_CURRENT_USER\TestSection";
PHP:
Registry.GetValue(keyPath, "TestVariable", "None");
None - значение, которое вернёт метод в случае неудачи при считывании значения
Наглядный пример использования - получение ник-нейма игрока из клиента SA-MP.
Параметры лаунчера SA-MP, такие как ник-нейм и путь к исполняемому файлу gta_sa.exe расположены по пути HKEY_CURRENT_USER\Software\SAMP
PHP:
const string keyPath = @"HKEY_CURRENT_USER\Software\SAMP";
string nickname = (string)Registry.GetValue(keyPath, "PlayerName", "Нет ник-нейма");
Получаем значение параметра PlayerName по пути HKEY_CURRENT_USER\Software\SAMP а в случае неудачи возвращаем "Нет ник-нейма" и записываем данные, которые вернул метод, в переменную nickname
(string) - преобразование данных в нужный тип, в данном случае - строку, можно так же использовать метод toString().
(string) - преобразование данных в нужный тип, в данном случае - строку, можно так же использовать метод toString().
Ну и выводим наши данные
PHP:
Console.WriteLine("Ваш ник-нейм: " + nickname);
PHP:
Console.WriteLine($"Ваш ник-нейм {nickname}");
PHP:
MessageBox.Show("Ваш ник-нейм: " + nickname);
PHP:
MessageBox.Show($"Ваш ник-нейм: {nickname}");
И вот наш результат:
