打开注册表办法:在运行窗口输入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);