【发布时间】:2012-03-02 13:03:03
【问题描述】:
我试图以标准用户身份从 Windows 7 上的 HKEY_CURRENT_USER\Software\Classes 读取一个值,虽然密钥存在,但我收到错误消息。下面的两个代码都不成功:
l = RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Classes", 0, KEY_READ, &hKey);
// RegOpenKeyEx doesn't success either
l = RegOpenKey(HKEY_CURRENT_USER, L"Software\\Classes", &hKey);
此代码位于一个 dll 中,由一个应用程序调用,该应用程序执行许多操作(我不知道它的全部功能)。
但是,RegOpenKey 在同一台计算机 和同一帐户 上的简单应用程序完美运行...
谁能告诉我可能导致问题的原因以及两者之间的区别? 测试应用程序是用 c++ 编写的,而 dll 是用 c 编写的。
编辑:问题已解决,只需删除 L“Software\Classes”之前的“L”...
【问题讨论】:
-
您的操作系统是 32 位还是 64 位?
-
@João Augusto:问题是“返回 2(未找到文件)”
-
那么既然你说你的操作系统是 32 位的,那么只有 1 个选项,调用 dll 的应用程序正在另一个用户下运行。
-
或冒充其他用户。
-
我敢打赌,这个问题完全是另外一回事。例如,您可能在调用
RegOpenKey之后调用GetLastError,而没有先检查RegOpenKey的返回值。
标签: c++ c registry registrykey