【C++】查询、创建、设置注册表键值的示例代码

示例代码将在注册表位置:HKEY_CURRENT_USER\Software\  读写键值

bool LicenseManage::OpenRegKey(HKEY& hRetKey)
{
    if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,"Software", &hRetKey))
    {
        return true;
    }
    return false;
}
bool LicenseManage::CreateRegKey(string strSubKey, string strValueName, string strValue)
{
    HKEY hKey;
    HKEY hSubKey;
    if (OpenRegKey(hKey))
    {
        // 创建键
        RegCreateKey(hKey,strSubKey.c_str(), &hSubKey);
        // 设置键值
        if( ERROR_SUCCESS != RegSetValueEx(hSubKey,strValueName.c_str(),0,REG_SZ,(CONST BYTE *)strValue.c_str(),strValue.size()+1))
        {
            return false;
        }
        RegCloseKey(hKey) ; //关闭注册表
        return true;
    }
    return false;
}

bool LicenseManage::QueryRegKey(string strSubKey, string strValueName, string& strValue)
{
    DWORD dwType= 1;//定义数据类型
    DWORD dwLen = MAX_PATH;
    char data[MAX_PATH];
    memset(data,0,sizeof(data));
    HKEY hKey;
    HKEY hSubKey;
    if (OpenRegKey(hKey))
    {
        string strTempKey = "Software\\"+strSubKey;
        if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,strTempKey.c_str(), &hSubKey))
        {
            if (ERROR_SUCCESS == RegQueryValueEx(hSubKey,strValueName.c_str(),0,&dwType,(LPBYTE)data,&dwLen))
            {
                strValue = data;
                RegCloseKey(hKey) ; //关闭注册表
                return true;
            }
        }
        RegCloseKey(hKey) ; //关闭注册表
    }
    return false;
}
bool LicenseManage::SetRegKey(string strSubKey, string strValueName, string strValue)
{
    HKEY hKey;
    HKEY hSubKey;
    if (OpenRegKey(hKey))
    {
        string strTempKey = "Software\\"+strSubKey;
        if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,strTempKey.c_str(), &hSubKey))
        {
            if (ERROR_SUCCESS == RegSetValueEx(hSubKey,strValueName.c_str(),0,REG_SZ,(LPBYTE)strValue.c_str(),strValue.size()))
            {
                RegCloseKey(hKey) ; //关闭注册表
                return true;
            }
        }
        RegCloseKey(hKey) ; //关闭注册表
    }
    return false;
}


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值