我有一个C ++ Win32 DLL,由在Windows7的requireAdministrator的requestedExecutionLevel中运行的应用程序调用。
如何读取已经在StdUser级别下创build的HKEY_LOCAL_MACHINE \ Software \ MyApp项?
这个键是在HKEY_USERS \ _Classes \ VirtualStore \ MACHINE \ SOFTWARE \ Wow6432Node中自动创build的
我发现这篇文章是关于它的,但是它只涉及到运行代码注入的过程。
谢谢!
你不能。
你说StdUser应用程序试图写一个设置到HKLM\Software\MyApp
并最终写入虚拟化位置HKEY_USERS\ <UserSID> _Classes\VirtualStore...`
要阅读它,你必须知道UserSID; 如果有多个用户,则每个用户可能具有写在该密钥中的不同数据。
在其清单中具有requestedExecutionLevel
进程关闭虚拟化。 有关如何修改虚拟化行为,请参阅控制注册表虚拟化部分。
如果你有64位的操作系统,你可以尝试设置特权TRegistry *reg=new TRegistry(KEY_WOW64_64KEY)
。 如果你有32位的操作系统, reg->OpenKey("Software")
,你自动重定向到你的密钥,那么你可以用这个键来操作。