Implementation: registry additions and deletions to change search

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, &reg_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("创建注册项失败!"));
        }
    }
}

Guess you like

Origin www.cnblogs.com/zpchcbd/p/12185445.html