/// <summary>
/// Удаляет заданный параметр из раздела реестра
/// </summary>
/// <param name='keyName'>Имя ключа</param>
/// <param name='valueName'>Имя параметра</param>
/// <returns>В успешном случае возвращается
/// ERROR_SUCCESS</returns>
public static int DeleteValue(UIntPtr root, string keyName,
string valueName) {
UIntPtr hkey = UIntPtr.Zero;
try {
int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);
if (ERROR_SUCCESS != result) return result;
return RegDeleteValue(hkey, valueName);
} finally {
if (UIntPtr.Zero != hkey) {
RegCloseKey(hkey);
}
}
}
/// <summary>
/// Типы ключей
/// </summary>
public enum KeyType : uint {
None = 0,
String = 1,
Binary = 3,
Dword = 4,
}
/// <summary>
/// Тип доступа
/// </summary>
public enum KeyAccess : uint {
None = 0x0000,
QueryValue = 0x0001,
SetValue = 0x0002,
CreateSubKey = 0x0004,
EnumerateSubKeys = 0x0008,
Notify = 0x0010,
CreateLink = 0x0020
}
/// <summary>
/// HKEY_CLASSES_ROOT
/// </summary>
public static UIntPtr HKCR = new UintPtr(0x80000000);
/// <summary>
/// HKEY_CURRENT_USER
/// </summary>
public static UIntPtr HKCU = new UIntPtr(0x80000001);
/// <summary>
/// HKEY_LOCAL_MACHINE
/// </summary>
public static UIntPtr HKLM = new UIntPtr(0x80000002);
/// <summary>
/// HKEY_USERS
/// </summary>
public static UIntPtr HKU = new UintPtr(0x80000003);
/// <summary>
/// Возвращаемое значение в случае успеха
/// </summary>
public const int ERROR_SUCCESS = 0;
/// <summary>
/// Функция для создания заданного раздела реестра. Если раздел
/// уже существует, то функция открывает его.
/// </summary>
/// <param name='hkey'>[in] Дескриптор к открываемому разделу
/// или одна из ветвей реестра:
/// HKCR, HKCU, HKLM.</param>
/// <param name='lpSubKey'>[in] Имя для нового раздела. Данный
/// раздел должен быть подразделом раздела, определенного в
/// параметре hKey.
/// </param>
/// <param name='Reserved'>[in] Зарезервированный параметр.
/// Установлен равным 0</param>
/// <param name='lpClass'>[in] Имя класса или типа объекта
/// Данный параметр игнорируется, если раздел уже существует
/// </param>
/// <param name='dwOptions'>[in] Игнорируется; установите
/// равным 0
/// </param>
/// <param name='samDesired'>[in] Игнорируется; установите
/// равным 0
/// </param>
/// <param name='lpSecurityAttributes'>[in] Установите в NULL.
/// </param>
/// <param name='phkResult'>[out] Переменная, получаемая от
/// дескриптора нового или открытого раздела
/// Если вы больше не нуждаетесь в дескрипторе, то вызовите
/// функцию RegCloseKey для его закрытия. </param>
/// <param name='lpdwDisposition'>[out] Переменная, которая
/// получает значение 1 (REG_CREATED_NEW_KEY),
/// если раздел был создан
/// и значение 2 (REG_OPENED_EXISTING_KEY), если был открыт уже
/// существующий раздел