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

C++ RegOpenKeyEx给出错误2或错误161,两种方式都失败,c++,winapi,registry,windows-server,C++,Winapi,Registry,Windows Server,我正在尝试从Windows服务器读取注册表项,但我似乎无法让它使用或不使用斜杠。如果我尝试: lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Company\\Product\\ServerName", 0, KEY_QUERY_VALUE, &hDomainKey); 它给出了错误161,这是错误路径名。(指定的路径无效。) 好吧,这样试试看: lError = RegOpenKeyEx(HKEY_LOCAL_MACHIN

我正在尝试从Windows服务器读取注册表项,但我似乎无法让它使用或不使用斜杠。如果我尝试:

lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Company\\Product\\ServerName", 0, KEY_QUERY_VALUE, &hDomainKey);
它给出了错误161,这是错误路径名。(指定的路径无效。)

好吧,这样试试看:

lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Company\\Product\\ServerName", 0, KEY_QUERY_VALUE, &hDomainKey);
我得到错误2,找不到错误文件。(系统找不到指定的文件。)


我可以打开
regedit
,通过路径
My Computer\HKEY\u LOCAL\u MACHINE\SOFTWARE\Company\Product
,name
ServerName
,然后键入
REG\u SZ
,查看我想要检索的值。我在这里遗漏了什么?

打开键,而不是值:

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

然后使用(或)读取值。

+1。请注意,RegGetValue仅适用于Vista和更高版本。考虑<代码> ReqQuyValue或<代码> ReqQueRealEXEX < /C> >如果您需要支持早于此,但请注意零终止问题。我在我发布的代码后面添加了
RegQueryValueEx
,但我误解了这两个调用之间的关系。谢谢过了几分钟,我会接受的。