レジストリの操作


主なレジストリ操作関数

関数名 機能
RegOpenKeyEx 指定されたアクセス権でキーをオープンします。
RegCreateKeyEx 指定されたセキュリティ属性とアクセス権でキーを作成またはオープンします。
RegCloseKey キーをクローズして、 そのキーの情報をレジストリに書き込みます。
RegEnumKeyEx 指定されたキーのサブキーを列挙します。
RegEnumValue 指定されたキーの値を列挙します。
RegQueryValueEx 名前付きの値の種類とデータ情報を取得します。
RegDeleteValue キーから値を削除します。
RegDeleteKey キーを削除します。


Sample code
//HKEY_CURRENT_USERの指定されたキーからDWORD値を取得します
//lpszSection:キー名
//lpszEntry  :データの名前
//dwDefault  :キーがない場合のデフォルト値
//戻り値     :取得したDWORD値
DWORD GetRegInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, DWORD dwDefault)
{
    BOOL bResult = FALSE;
    DWORD dwBuffer = 0;
    HKEY hOpenKey;
    if(RegOpenKeyEx(HKEY_CURRENT_USER, lpszSection, 0, KEY_EXECUTE, &hOpenKey) == ERROR_SUCCESS) {
        DWORD dwType;
        DWORD dwBufferSize = sizeof(DWORD);
        if(RegQueryValueEx(hOpenKey, lpszEntry, 0, &dwType, reinterpret_cast<LPBYTE>(&dwBuffer), &dwBufferSize) == ERROR_SUCCESS) {
            bResult = TRUE;
        }
        RegCloseKey(hOpenKey);
    }
    
    if(!bResult) {
        dwBuffer = dwDefault;
    }
    return dwBuffer;
}

//HKEY_CURRENT_USERの指定されたキーから文字列を取得します
//lpszSection:キー名
//lpszEntry  :データの名前
//lpszDefault:キーがない場合のデフォルト値
//lpBuffer   :データを受け取るバッファ
//nSize      :バッファのサイズ
//戻り値     :なし(取得した値はlpBufferに格納されます)
void GetRegString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault, LPTSTR lpBuffer, DWORD nSize)
{
    BOOL bResult = FALSE;
    HKEY hOpenKey;
    if(RegOpenKeyEx(HKEY_CURRENT_USER, lpszSection, 0, KEY_EXECUTE, &hOpenKey) == ERROR_SUCCESS) {
        DWORD dwType;
        DWORD dwBufferSize = nSize;
        if(RegQueryValueEx(hOpenKey, lpszEntry, 0, &dwType,  reinterpret_cast<LPBYTE>(lpBuffer), &dwBufferSize) == ERROR_SUCCESS) {
            bResult = TRUE;
        }
        RegCloseKey(hOpenKey);
    }
    
    if(!bResult) {
        lstrcpyn(lpBuffer, lpszDefault, nSize);
    }
}

一覧メニューへ