如何读取已经在StdUser级别下创build的HKEY_LOCAL_MACHINE \ Software \ MyApp项?

我有一个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") ,你自动重定向到你的密钥,那么你可以用这个键来操作。