1. 程式人生 > >【C++】查詢、建立、設定登錄檔鍵值的示例程式碼

【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;
}