2013-12-14 4 views
1

다음 코드를 테스트하고 "RegOpenKeyEx failed with error 6 : 핸들이 유효하지 않습니다"라는 오류 메시지가 표시됩니다. 유니 코드로 컴파일하는 WinXP, MS VS 2010을 사용하고 있습니다.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")); 
    } 
관련 문제