我有一个C ++ Win32 DLL,由在Windows7中的requireAdministrator的requestedExecutionLevel中运行的应用程序调用。
如何阅读在StdUser级别下创建的HKEY_LOCAL_MACHINE \ Software \ MyApp密钥?
此密钥是在HKEY_USERS \ _Classes \ VirtualStore \ MACHINE \ SOFTWARE \ Wow6432Node
中自动创建的我找到了this article about it,但它仅涉及使用代码注入运行进程。
谢谢!
答案 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")
并且您自动重定向到您的密钥,那么您可以使用此密钥进行操作。