regopenkeyex는 hkey_local_machine에서 실패합니다
문제
안녕하세요 저는 Firefox.exe로가는 길을 제공하는 레지스트리 값을 읽으려고합니다. 이것은 아래에 저장됩니다
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 3.0.10\bin
(버전 번호는 다른 곳에서 찾을 수 있습니다)
그러나 나는 regopenkeyex가 error_success를 반환하도록하는 것 같다.
HKEY_LOCAL_MACHINE
따라서이 테스트는 실패합니다.
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("\\SOFTWARE"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS)
이 테스트가 통과하는 동안 :
if(RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT("\\Shell"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS)
해결책
오류 코드 161을 사용하여 내 컴퓨터에서 다음 코드가 실패했습니다. 이는 "나쁜 경로"를 의미합니다 (Winerror.h에서 찾아보십시오) :
long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
0,KEY_QUERY_VALUE, &hk );
그런 다음 "소프트웨어"를 사용하기 위해 regopenkeyEx로 호출을 변경했으며 (주연 슬래시 없음) 작동했습니다.
#include <windows.h>
#include <iostream>
using namespace std;
int main() {
HKEY hk;
// Notice that it's SOFTWARE instead of \\SOFTWARE:
long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
0,KEY_QUERY_VALUE, &hk );
if ( n == ERROR_SUCCESS ) {
cout << "OK" << endl;
}
else {
cout << "Failed with value " << n << endl;
}
}
제휴하지 않습니다 StackOverflow