WIn32API レジストリキーを削除する RegDeleteKey

レジストリキーを削除するには、RegDeleteKeyEx関数を用いる。


プロトタイプは、以下のとおり。

LONG WINAPI RegDeleteKeyEx(
  __in        HKEY hKey,
  __in        LPCTSTR lpSubKey,
  __in        REGSAM samDesired,
  __reserved  DWORD Reserved
);



  • 例として、「HKEY_CURRENT_USER\test\subkey」を削除する
  • #include <windows.h>
    #include <stdio.h>
    #include <locale.h>
    
    int main()
    {
        HKEY hKey;
        LONG lRet;
    
        //Unicode文字列を表示させるため
        setlocale(LC_ALL, setlocale(LC_CTYPE, ""));
    
        lRet = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("test"), 0, KEY_READ, &hKey);
        if (lRet != ERROR_SUCCESS) {
            return 1;
        }
    
        lRet = RegDeleteKey(hKey, TEXT("subkey"));
        if (lRet == ERROR_SUCCESS) {
            puts("RegDeleteKey succeeded!");
        } else {
    
            TCHAR szMsg[256];
            DWORD dwRet;
    
            dwRet = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
                NULL,
                lRet,
                0,
                szMsg,
                sizeof(szMsg)/sizeof(szMsg[0]),
                NULL);
    
            if (dwRet > 0) {
                _tprintf(TEXT("RegDeleteKey error: %s\n"), szMsg);
            } else {
                //FormatMessage was failed.
                _tprintf(TEXT("RegDeleteKey error\n"));
            }
        }
    
        RegCloseKey(hKey);
    
        return 0;
    }


  • 参考

  • http://msdn.microsoft.com/en-us/library/windows/desktop/ms724847(v=vs.85).aspx