Чтение онлайн

ЖАНРЫ

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:

return ERROR_SUCCESS;

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

/// <summary>

/// Получает заданное значение типа DWORD

/// </summary>

/// <param name="keyName">Имя ключа</param>

/// <param name="valueName">Имя
параметра</param>

/// <param name="dwordResult">Значение параметра</param>

/// <returns>B успешной случае возвращается

/// ERROR_SUCCESS</returns>

public static int GetDWORDValue(UIntPtr root, string keyName,

string valueName, ref uint dwordResult) {

UIntPtr hkey = UintPtr.Zero;

try {

int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

if (ERROR_SUCCESS != result) return result;

byte[] bytes = null;

uint length = 0;

KeyType keyType = KeyType.None;

result = RegQueryValueEx(hkey, valueName, IntPtr.Zero, ref keyType, null,

ref length);

bytes = new byte[Marshal.SizeOf(typeof(uint))];

length = (uint)bytes.Length;

keyType = KeyType.None;

result = RegQueryValueEx(hkey, valueName, IntPtr.Zero, ref keyType, bytes,

ref length);

if (ERROR_SUCCESS != result) return result;

dwordResult = BitConverter.ToUInt32(bytes, 0);

return ERROR_SUCCESS;

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

/// <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.

Поделиться с друзьями: