c++ - 当 key 存在时,RegOpenKey/RegOpenKeyEx 在 Windows 7 上返回 2(未找到文件)

标签 c++ c registry registrykey

我尝试以标准用户身份从 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/

相关文章:

c - pthread_mutex_lock() 和 pthread_mutex_trylock() 有什么区别

c - 结构中的枚举

c - OpenGL:用于加载资源的辅助线程?

scripting - 如何使用批处理文件将 REG_BINARY 值解析为注册表项?

c++ - 在 char 数组包装类中实现 C++ setter 的正确方法是什么?

c++ - 警告 : deprecated conversion from string constant to 'char*' '

C++ 二进制条码赋值

c++ - 二叉树中的节点搜索溢出堆栈

iis - 访问注册表项 'Global' 被拒绝

c++ - 检查 key 是否已经存在(RegOpenKey)