I 需要的头文件:atlbase.h
II 访问注册表几个常用的API 函数
1.打开注册表:
LONG RegOpenKeyEx(HKEY hKey,//已经打开的键的句柄,或者直接是上述几个根键
LPCTSTR lpSubKey,//要打开的子键名字的地址
DWORD ulOptions,//保留值,必须为0
REGSAM samDesired,//打开方式,如读还是写
PHKEY phkResult//返回的打开的子键的句柄
);
2,枚举该目录下的所有子目录:
LONG RegEnumKeyEx(
HKEY hKey,
DWORD dwIndex,
LPWSTR lpName,
LPDWORD lpcName,
LPDWORD lpReserved,
LPWSTR lpClass,
LPDWORD lpcbClass,
PFILETIME lpftLastWriteTime
);
示例 dwIndwx = 0 .从0开始递增遍历完整个子目录:
DWORD dwIndex = 0;
LONG lRet;
DWORD cbName = KEY_LEN;
TCHAR *lpszSubKeyName = new TCHAR[KEY_LEN];
while((lRet = ::RegEnumKeyEx(hKey, dwIndex, szSubKeyName, &cbName, NULL, NULL, NULL, NULL)) != ERROR_NO_MORE_ITEMS)
{
//do what you want to
}
3 查找特定文件的文件名,类型,数据:
查询某一个键值:RegQueryValueEx
函数定义:LONG RegQueryValueEx(HKEY hKey,//要查询的键的句柄
LPCTSTR lpValueName,//要查询的键值的名称
LPDWORD lpReserved,//保留值
LPDWORD lpType,//要查询的数据的类型
LPBYTE lpData,//要返回的查询的数据
LPDWORD lpcbData//预置的数据的长度
);
4设置一个键值RegSetValueEx:
函数定义:LONG RegSetValueEx(HKEY hKey,//要设置的键的句柄
LPCTSTR lpValueName,//要访问的键值的名称
LPDWORD lpReserved,//保留值
DWORD dwType,//要设置的数据的类型
const BYTE *lpData,//要设置的健值
DWORD cbData//数据的长度
);
总结:RegOpenKeyEx()去打开一个注册表,hKey 是几个特定的值中一个,比如:HKEY_LOCAL_MACHINE, HKEY_LOCAL_USER等。打开之后,phkResult 返回查找的KEY值,
将phkResult 传进RegEnumKeyEx()中进行枚举。