转载: https://www.cnblogs.com/bksqmy/p/4551406.html
1. 说明:
注册表是 Windows 重要组成部分, 注册表记录了大量有关电脑软硬件的信息. 注册表中的值通过其名称标识. 值名称由与键名相同的字符组成. 值本身可以是字符串, 二进制数据或者是 32 位无符号值.
2. 预定义的注册表键. 注册表包含了几个预定义键:
HKEY_LOCAL_MACHINE 包含描述计算机及其配置的条目. 其中包括关于处理器, 系统主板, 内存和已安装的软件和硬件的信息.
HKEY_CLASSES_ROOT 是与文档类型和 OLE\COM 相关的信息的支持键. 这个键是 HKEY_LOCAL_MACHINE 的从属键.
HKEY_USERS 用作默认用户首选设置, 也作为单个用户的首选设置.
HKEY_CLASSES_USER 是用于当前 (登录) 用户的相关信息.
HKEY_CURRENT_CONFIG 包含了当前系统配置的信息.
还有一个, 一般不会出现, 只有配置的局域网后才会有
3.CRegKey 类及主要使用和函数说明
所需要头文件: atlbase.h
☆ 打开一个键的函数: RegOpenKeyEx
函数定义:
- LONG RegOpenKeyEx(HKEY hKey,// 已经打开的键的句柄, 或者直接是上述几个根键
- LPCTSTR lpSubKey,// 要打开的子键名字的地址
- DWORD ulOptions,// 保留值, 必须为 0
- REGSAM samDesired,// 打开方式, 如读还是写
- PHKEY phkResult// 返回的打开的子键的句柄
- );
☆ 查询某一个键值: RegQueryValueEx
函数定义:
- LONG RegQueryValueEx(HKEY hKey,// 要查询的键的句柄
- LPCTSTR lpValueName,// 要查询的键值的名称
- LPDWORD lpReserved,// 保留值
- LPDWORD lpType,// 要查询的数据的类型
- LPBYTE lpData,// 要返回的查询的数据
- LPDWORD lpcbData// 预置的数据的长度
- );
☆ 设置一个键值 RegSetValueEx
函数定义:
- LONG RegSetValueEx(HKEY hKey,// 要设置的键的句柄
- LPCTSTR lpValueName,// 要访问的键值的名称
- LPDWORD lpReserved,// 保留值
- DWORD dwType,// 要设置的数据的类型
- const BYTE *lpData,// 要设置的健值
- DWORD cbData// 数据的长度
- );
4. 实例:
- void writeRegSz(char *uniqueId)
- {
- HKEY hkey;
- HKEY hTempKey;
- char m_name_set[256] = "China";
- DWORD len = strlen(uniqueId) + 1;
- LPCTSTR data_set = _T("System");
- if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, data_set, 0, KEY_SET_VALUE, &hkey))
- {
- if (ERROR_SUCCESS == ::RegCreateKey(hkey, _T("test1112"), &hTempKey))
- {
- if (ERROR_SUCCESS != ::RegSetValueEx(hTempKey, _T("Name"), 0, REG_SZ, (const BYTE*)uniqueId, len))
- {
- cout << "写入错误" << endl;
- }
- }
- else
- {
- cout << "创建 key 错误" << "\n";
- }
- }
- else
- {
- cout << "打开注册表错误" << "\n";
- }
- ::RegCloseKey(hkey);
- }
来源: http://www.bubuko.com/infodetail-3438393.html