c++ - RegOpenKeyEx 给出错误 2 或错误 161,两种方式均失败

标签 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。我在这里缺少什么?

最佳答案

打开键,而不是值:

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

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

关于c++ - RegOpenKeyEx 给出错误 2 或错误 161,两种方式均失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809003/

相关文章:

c++ - 减少库的安装

c++ - 将三个 QGraphicsRectItems 连接成一个对象

c - 下面的代码创建了多少线程,为什么?

c - 暂停/恢复所有用户进程——这可能吗?

c++ - 如何读取在 StdUser 级别下创建的 HKEY_LOCAL_MACHINE\Software\MyApp key ?

windows - Windows 中用户配置文件的唯一标识符

c++ - C++ 概念和 C++ 模板约束有什么区别?

java - 在单个 Tread 中调用多次 JNI

windows - !heap -s 在 windbg 中不显示不断增长的堆

Windows XP : change background color programatically (how to redraw Desktop after changing registry key? )