C++RegOpenKeyEx-错误6:句柄无效

C++ RegOpenKeyEx - Error 6: The handle is invalid

本文关键字:句柄 无效 错误 C++RegOpenKeyEx-      更新时间:2023-10-16

我正在测试以下代码并收到错误:"RegOpenKeyEx失败,错误为6:句柄无效",我做错了什么?我使用的是WinXP,MS VS 2010,以Unicode进行编译。

HKEY hKey;
if (!RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, &hKey)) {
    ErrorExit(TEXT("RegOpenKeyEx"));
}

您的错误处理中有一个错误。正如所发布的,此代码可以永远生成正确的错误消息。RegOpenKeyEx()与大多数winapi函数不同,它直接返回错误代码,您可以而不是使用GetLastError()。

它需要重写为类似的内容:

  HKEY hKey;
  LONG err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, &hKey);
  if (err != ERROR_SUCCESS) {
      ErrorExit2(err, TEXT("RegOpenKeyEx"));
  }