如何读取在StdUser级别下创建的HKEY_LOCAL_MACHINE \ Software \ MyApp密钥?

时间:2011-08-05 05:30:37

标签: c++ windows registry uac

我有一个C ++ Win32 DLL,由在Windows7中的requireAdministrator的requestedExecutionLevel中运行的应用程序调用。

如何阅读在StdUser级别下创建的HKEY_LOCAL_MACHINE \ Software \ MyApp密钥?

此密钥是在HKEY_USERS \ _Classes \ VirtualStore \ MACHINE \ SOFTWARE \ Wow6432Node

中自动创建的

我找到了this article about it,但它仅涉及使用代码注入运行进程。

谢谢!

2 个答案:

答案 0 :(得分:2)

你不能。

您说StdUser应用程序试图将设置写入HKLM\Software\MyApp并最终将其写入虚拟化位置HKEY_USERS\<UserSID>_Classes\VirtualStore...`。要阅读它,你必须知道UserSID;如果有多个用户,则每个用户可能在该密钥中写入不同的数据。


关闭其清单中requestedExecutionLevel的进程的虚拟化。请参阅Controlling Registry Virtualization部分,了解如何修改虚拟化行为。

答案 1 :(得分:1)

如果您有64位操作系统,可以尝试设置权限TRegistry *reg=new TRegistry(KEY_WOW64_64KEY)。如果您有32位操作系统,reg->OpenKey("Software")并且您自动重定向到您的密钥,那么您可以使用此密钥进行操作。