注册表简单的操作

注册表的编写
用到的函数
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值