注册表的编写
用到的函数
RegOpenKeyEx()
函数功能描述:打开一个制定的注册表键
函数原型:
LONG RegOpenKeyEx(
HKEY hKey, // 已经打开键的句柄
LPCTSTR lpSubKey, // 子键的名称
DWORD ulOptions, // 保留
REGSAM samDesired, // 安全访问标记
PHKEY phkResult // 指向将要打开键的句柄
)
具体内容可以参考
https://blog.csdn.net/danhu/article/details/1775974
RegQueryValueEx()
RegQueryValueEx函数检索与开放注册表键关联的指定值名称的类型和数据
函数原型:
LONG RegQueryValueEx(
HKEY hKey, //当前打开的密钥
LPCTSTR lpValueName, // 查询值的名称
LPDWORD lpReserved, // 保留,必须为NULL
LPDWORD lpType, // 指向变量的指针
LPBYTE lpData, // 指向接受数据的缓冲区指针(存储地址)
LPDWORD lpcbData //存储大小
);
RegCreateKey()和RegCreateKeyEx()都是用于创建或打开注册表项。
函数原型:
LONG WINAPI RegCreateKey(
In HKEY hKey, //要打开项的句柄
In_opt LPCTSTR lpSubKey, //想要创建的子项
Out PHKEY phkResult //指定一个变量用于装载新子项的句柄
);
RegCreateKeyEx()的详解
https://blog.csdn.net/weixin_30765577/article/details/96361995
RegSetValue()
RegSetValue可以设置指定注册表项的默认值或未命名值的数据的函数
函数原型
LONG WINAPI RegSetValue(
In HKEY hKey, //已打开项的句柄
In_opt LPCTSTR lpSubKey, //想要对他的值进行改变的值
In DWORD dwType, //必须是REG_SZ
In LPCTSTR lpData, //新的值
In DWORD cbData //新值的大小
);
RegSetValueEX()的详解
https://blog.csdn.net/ke_yi_/article/details/80930423
注册表的读取
先打开注册表,然后读取其中的字节
long lRet;
HKEY hKey;//注册表里面的句柄
TCHAR tchData[64];//用来保存从注册表中读取的字符串
DWORD dwSize;
//打开Key
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, KEY_QUERY_VALUE, &hKey);
dwSize = sizeof(tchData);
if (lRet == ERROR_SUCCESS)
{
//读取注册表内容
lRet =RegQueryValueEx(hKey,_T("ProcessorNameString"),NULL,NULL,(LPBYTE)tchData,&dwSize);
if (lRet == ERROR_SUCCESS)
{
SetDlgItemText(IDC_STATIC_CPU, tchData);
}
else
{
AfxMessageBox(_T("RegQueryValueEx failed"));
}
}
else
{
AfxMessageBox(_T("RegOpenKey failed"));
}
RegCloseKey(hKey);
注册表子健的创建
HKEY hKey;
CString strError;
//创建一个新的子健
LONG errorNum = RegCreateKey(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\MyAppTest"), &hKey);
if (errorNum!=ERROR_SUCCESS )
{
DWORD dwErrorNum = ::GetLastError();
strError.Format(_T("GetLastError()获取的错误码为:%d\nRegCreateKey调用失败,错误码为:%d"),
dwErrorNum, errorNum);
MessageBox(strError, _T("Error"), MB_ICONSTOP);
}
else
{
MessageBox(_T("创建成功!"));
}
//保存数据
RegSetValue(hKey, NULL, REG_SZ, _T("liebao"), 6);
DWORD dwAge = 30;
RegSetValueEx(hKey,_T("age"),0,REG_DWORD,(CONST BYTE*)&dwAge,4);
RegCloseKey(hKey);
新建子健的读取
LONG lValue;
RegQueryValue(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\MyAppTest"), NULL, &lValue);
TCHAR* pBuf = new TCHAR[lValue];
RegQueryValue(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\MyAppTest"), pBuf, &lValue);
AfxMessageBox(pBuf);
新建子健里面值的读取
HKEY hKey;
RegOpenKey(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\MyAppTest"), &hKey);
DWORD dwType;
DWORD dwValue;
DWORD dwAge;
RegQueryValueEx(hKey, _T("age"), 0, &dwType, (LPBYTE)&dwAge, &dwValue);
CString str;
str.Format(_T("age==%d"), dwAge);
AfxMessageBox(str);
链接:https://pan.baidu.com/s/1-y3qrWNLYmuVMxIa_r8iiA
提取码:7ss0
里面是测试程序,比较简单
可以看看这个,比我好的多
https://www.cnblogs.com/lartely/archive/2011/04/10/2011770.html