我尝试以标准用户身份从 Windows 7 上的 HKEY_CURRENT_USER\Software\Classes 读取值,尽管该 key 存在,但出现错误。下面的两个代码都没有成功:
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”...
最佳答案
很可能,代码正在以不同的用户身份运行,或其当前用户与进程的缓存注册表项不同步。请参阅RegOpenCurrentUser .
关于c++ - 当 key 存在时,RegOpenKey/RegOpenKeyEx 在 Windows 7 上返回 2(未找到文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533765/