注册表

打开注册表办法:在运行窗口输入regedit数组

注册表相关函数:缓存

RegOpenKeyEx: 打开一个指定的注册表键。安全

RegOpenKeyEx 函数的定义形式为:函数

LONG RegOpenKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult 
)

第一个参数:hKey:须要打开的主键的名称(HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,spa

HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG);code

第二个参数:lpSubKey:须要打开的子键的名称: 指向一个非中断字符串包含将要打开键的名称。若是参数设置为NULL 或者指向一个空字符串,过程将打开一个新的句柄由hKey参数肯定的值。这种状况下,过程不会关闭先前已经打开的句柄。htm

第三个参数:ulOptions:保留, 必须设为0;索引

第四个参数:samDesired:安全访问标记,也就是权限,(KEY_ALL_ACCESS。。。。);内存

第五个参数:phkResult:获得的将要打开键的句柄。资源

返回值: 若是函数调用成功,则返回0(ERROR_SUCCESS)。不然,返回值为文件WINERROR.h中定义的一个非零的错误代码。

具体用法如例:

CString strSubKey(_T("SYSTEM\\ControlSet001\\Control\\ComputerName\\ComputerName"));
if( ERROR_SUCCESS !=  RegOpenKeyEx(HKEY_LOCAL_MACHINE, strSubKey, 0, KEY_ALL_ACCESS, &hKey))
{
    retuen;
}

 

RegEnumKeyEx: 枚举指定项下方的子项

RegEnumKeyEx函数的定义形式为:

LONG RegQueryValueEx(HKEY hKey, DWORD dwIndex, LPTSTR lpName,LPDWORD lpcbName, LPDWORD lpReserved,LPTSTR lpClass, LPDWORD lpcbClass,PFILETIME lpftLastWriteTime);

第一个参数:hKey: 一个已打开项的句柄,或者指定一个标准项名 ;

第二个参数:dwIndex: 欲获取的子项的索引。第一个子项的索引编号为零 ;

第三个参数: lpName :用于装载指定索引处项名的一个缓冲区 ;

第四个参数: lpcbName : 指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。一旦返回,它会设为实际装载到lpName缓冲区的字符数量 ;

第五个参数: lpReserved :保留,必须设为NULL;

第六个参数: lpClass : 项使用的类名。能够为vbNullString

第七个参数: lpcbClass : 用于装载lpClass缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字符数量 ;

第八个参数: lpftLastWriteTime : 枚举子项上一次修改的时间 ;

返回值: 若是函数调用成功,则返回0(ERROR_SUCCESS) 。其余任何值都表明一个错误代码

 

SHDeleteKey: 用来删除一个注册表键,包括其下面的子键 。RegDeleteKey也能够用来删除一个键值 , 在 Win 95/98 平台下,也可用来删除整个子键和键值。可是在Windows NT/2000平台下,只能用来删除没有子键的键。

SHDeleteKey函数的定义形式为:

LONG SHDeleteKey (HKEY hKey,LPCTSTR lpSubKey);

第一个参数:hKey: 一个已打开项的句柄,或者指定一个标准项名 ;

第二个参数:lpSubKey:被删除的键值名称。它必须是hkey的一个子项,但它并不能有子项。此参数不能为空。键值的名称不区分大小写。

返回值: 若是函数调用成功,则返回0(ERROR_SUCCESS) 。其余任何值都表明一个错误代码

具体用法如例:

TCHAR szSubKey[MAX_PATH];
DWORD dwNameLen = MAX_PATH;
if (ERROR_SUCCESS == RegEnumKeyEx(hKey, 0, szSubKey, &dwNameLen, NULL, NULL, NULL, NULL))
{
    if(ERROR_SUCCESS != SHDeleteKey(HKEY_LOCAL_MACHINE,strSubKey));
   {
        AfxMessageBox(_T("删除失败!"));
        return;
   }
}

 

RegQueryValueEx:获得所打开注册表键所关联的一个给定值的类型和数据

RegQueryValueEx 函数的定义形式为:

LONG RegQueryValueEx( HKEY hKey, LPTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType, LPBYTE lpData,LPDWORD lpcbData );

第一个参数:hKey: 一个已打开项的句柄,或者指定一个标准项名 ;

第二个参数:lpValueName: 要查询值的名字的地址,若是是NULL或一个空字符串(""),这个函数找回这个键的未命名或默认值的类型和数据;

第三个参数: lpReserved:保留,必须设为NULL;

第四个参数:lpType:值类型缓存地址,若是不须要类型lpType参数能够为空(NULL)。能够有如下值:1.REG_BINARY二进制数据。2.REG_DWORD一个32位数字。3.REG_DWORD_LITTLE_ENDIAN一个little-endian格式的32位数字。这至关于REG_DWORD。(ittle-endian格式,是一个多字节值在内存中被从低字节到高字节存贮。如,值0x12345678被存贮为0x78 0x56 0x34 0x12)。4.REG_DWORD_BIG_ENDIAN一个big-endian格式的32位数字。(big-endian格式,一个多字节值在内存职被从高字节到低字节存贮。如,值0x12345678被存贮为(0x12 0x34 0x56 0x78)。)5.REG_EXPAND_SZ一个包含未被引用的环境变量的以空字符结束的字符串(如,"%PATH%")。ExpandEnvironmentStrings函数。6.REG_LINK一个Unicode符号链接。7.REG_MULTI_SZ一个以空字符结束的字符串数组,被两个null字符结束。8.REG_NONE未定义值类型。9.REG_RESOURCE_LIST一个设备驱动资源列表。10.REG_SZ一个以空字符结束的字符串。

第五个参数:lpData: 指定接收值数据的缓存区。若是数据是不须要的这个参数能够为空。

第六个参数:lpcbData :以字节为单位,指向lpData参数所指定地缓存区大小的变量。函数返回复制到lpData的数据大小的变量。

返回值: 若是函数调用成功,则返回0(ERROR_SUCCESS) 。其余任何值都表明一个错误代码

具体用法如例:

DWORD dwBufLen;
TCHAR bufPath[MAX_PATH] = _T("\0");
if(ERROR_SUCCESS != RegQueryValueEx(hKey, _T("InstallDir"), NULL, NULL, (LPBYTE)bufPath, &dwBufLen))
{
   return;
}

 

RegCloseKey:释放指定注册键的句柄

RegCloseKey 函数的定义形式为:

LONG RegCloseKey(HKEY hKey // 释放键的句);

参数:hKey: 想要关闭的已经打开的键。

返回值: 若是函数调用成功,则返回0(ERROR_SUCCESS) 。其余任何值都表明一个错误代码

具体用法如例:

RegCloseKey(hKey);
相关文章
相关标签/搜索