The registry check:
void CMyMFCDlg::OnBnClickedButton1Cpu()
{
HKEY hkey;
wchar_t reg_value[64];
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS) {
//打开成功了,接下来就是进行读取的操作
DWORD reg_value_size = sizeof(reg_value);
if (RegQueryValueEx(hkey, _T("ProcessorNameString"), NULL, NULL, (LPBYTE)reg_value, ®_value_size) == ERROR_SUCCESS) { //读取的值放到reg_value缓冲区中
SetDlgItemText(IDC_STATIC_CPU, reg_value);
}
else {
AfxMessageBox(_T("读取注册表失败!"));
}
}
else {
AfxMessageBox(_T("打开注册表失败!"));
}
RegCloseKey(hkey);
}
Registry by:
void CMyMFCDlg::OnBnClickedButton2()
{
HKEY hkey = NULL;
HKEY test = NULL;
HKEY hkey_res = NULL;
wchar_t reg_buf[64];
DWORD reg_len = sizeof(reg_buf);
SECURITY_ATTRIBUTES sa;
/*
参考https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regcreatekeyexw
*/
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS) {
DWORD dw;
if (RegCreateKeyExW(hkey,
_T("MyRegTest"),
0,
REG_NONE,
REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY,
&sa,
&hkey_res,
&dw) == ERROR_SUCCESS) {
/*
参考https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regsetvaluew 这里函数设置的键的类型只能是REG_SZ类型 如果想要其他的需要使用RegSetValueEx
*/
RegSetValue(hkey_res, NULL, REG_SZ, reg_buf, reg_len);
RegCloseKey(hkey);
SetDlgItemText(IDC_STATIC_REG, _T("创建成功!"));
}
else {
AfxMessageBox(_T("创建注册项失败!"));
}
}
}