2013-12-14 60 views
1

我测试下面的代码并收到错误:“RegOpenKeyEx失败,错误6:句柄无效”,我做错了什么? 我使用WinXP,MS VS 2010编译为Unicode。C + + RegOpenKeyEx错误6:句柄无效

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

回答

1

您的错误处理有错误。如发布,此代码可以从不生成适当的错误消息。 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")); 
    } 
相关问题