RegOpenKeyEx给出错误2或错误161,两种方式都失败

时间:2012-12-10 20:51:33

标签: c++ winapi registry windows-server

我正在尝试从Windows服务器读取一个注册表项,无论是否使用前导斜杠,我似乎无法使其工作。如果我尝试:

lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Company\\Product\\ServerName", 0, KEY_QUERY_VALUE, &hDomainKey);

它给出了错误161,即ERROR_BAD_PATHNAME。 (指定的路径无效。)

好的,所以这样试试:

lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Company\\Product\\ServerName", 0, KEY_QUERY_VALUE, &hDomainKey);

我收到错误2,ERROR_FILE_NOT_FOUND。 (系统找不到指定的文件。)

我可以打开regedit并查看我想要检索的值,路径为My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Company\Product,名称为ServerName,类型为REG_SZ。我在这里缺少什么?

1 个答案:

答案 0 :(得分:8)

打开密钥,而不是值:

lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                      "SOFTWARE\\Company\\Product",
                      0,
                      KEY_QUERY_VALUE,
                      &hDomainKey);

然后使用RegQueryValueEx()(或RegGetValue())读取该值。