Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

C# Работа с реестром

Статус
В этой теме нельзя размещать новые ответы.

#Samurai

Умник
Сегодня я расскажу о том, как работать с реестром на языке программирования C#.

Что такое реестр?​
Полагаю, что ты, юзернейм, открыл эту тему уже зная, что такое реестр и как ты будешь применять информацию из урока, а если же нет, то:
Реестр Windows (англ. Windows Registry), или системный реестр — иерархически построенная база данных параметров и настроек в большинстве операционных систем Microsoft Windows.
Иными словами реестр - это база данных, которая хранит себе различные параметры и настройки.
[HR][/HR]
По традиции подключаем директиву для работы.
PHP:
using Microsoft.Win32;
[HR][/HR]
Запись данных в реестр​
Для записи значения используется метод SetValue из класса Registry
Аргументы: путь к секции, название параметра, значение, (опционально) тип значения

PHP:
const string keyPath = @"HKEY_CURRENT_USER\TestSection";
Registry.SetValue(keyPath, "TestVariable", 123456);
PHP:
const string keyPath = @"HKEY_CURRENT_USER\TestSection";
Здесь мы записываем в строковую константу KeyPaty путь к секции, которую мы хотим создать
HKEY_CURRENT_USER это имя раздела, в котором будет создана секция, в данном случае это раздел, в котором хранятся настройки и параметры для текущего пользователя, список всех разделов и их вложенных секций можно увидеть в редакторе реестра Windows, открыть его можно командой regedit (Либо ввести в меню пуск regedit, либо выполнить эту команду с помощью сочетания клавиш Win + R, либо ввести её в командной строке Windows)

PHP:
Registry.SetValue(keyPath, "TestVariable", 123456);
Записываем значение в указанном в keyPath пути к секции, где TestVariable - название параметра, а 123456 - его значение, если не указать название параметра, то он запишется в Default.

Примечания:
• Константу/переменную создавать вовсе не обязательно, достаточно в методе Registry.SetValue вместо keyPath напрямую указать путь.
• Если указанной секции не существует в разделе, то она будет создана
• Если такой параметр уже существует в секции, то его значение будет перезаписано и тип будет изменён, если указан.
• Для записи в качестве значения переменных среды необходимо использовать тип данных RegistryValueKind.ExpandString. Пример:
PHP:
Registry.SetValue(keyPath, "TestPath", "%path%", RegistryValueKind.ExpandString);
[HR][/HR]
Чтение данных​
Для чтения данных из секции используется метод 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");
Считывание значения с параметра TestVariable, расположенном в разделе(или же секции), указанном в keyPath.
None - значение, которое вернёт метод в случае неудачи при считывании значения
[HR][/HR]
Наглядный пример использования - получение ник-нейма игрока из клиента SA-MP.​
Параметры лаунчера SA-MP, такие как ник-нейм и путь к исполняемому файлу gta_sa.exe расположены по пути HKEY_CURRENT_USER\Software\SAMP
Следовательно, нам необходимо получить значение параметра PlayerName, который расположен по пути 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().

Ну и выводим наши данные
PHP:
Console.WriteLine("Ваш ник-нейм: " +  nickname);
или
PHP:
Console.WriteLine($"Ваш ник-нейм {nickname}");

PHP:
MessageBox.Show("Ваш ник-нейм: " + nickname);
или
PHP:
MessageBox.Show($"Ваш ник-нейм: {nickname}");
Пример:


И вот наш результат:
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу