您好我正在尝试读取一个注册表值,该值为我提供了firefox.exe的路径。 这存储在
下HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 3.0.10\bin
(版本号可以在其他地方找到)
但是我似乎无法让RegOpenKeyEx为
下的任何内容返回ERROR_SUCCESSHKEY_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)
答案 0 :(得分:18)
以下代码在我的机器上失败,错误代码为161,这意味着“错误路径”(在winerror.h中查找):
long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
0,KEY_QUERY_VALUE, &hk );
然后我将对RegOpenKeyEx的调用更改为使用“SOFTWARE”(注意没有前导斜杠)并且它有效:
#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;
}
}