4

在通用的基于.NET 的组件的上下文中,它可以托管在各种场景中 - 即,无论是否为 64 位,交互过程与否,我需要在受 UAC 虚拟化影响的区域中写入注册表。但是,我想防止此类访问被虚拟化,以便每次执行都不受当前上下文的变幻莫测(即,不希望从 HKLM 读取一个读数,因为它有一个清单,另一个来自 HKCU。 .VirtualStore 因为它没有)。

换句话说,我正在寻找类似于 KEY_WOW64_64KEY的东西,或者reg.exe REG_KEY_DONT_VIRTUALIZE表明我在任何情况下都不想被虚拟化。或者是否有某种形式的规范化相关语法我可以用你指定 >260 字符文件名的方式强制它?

如果执行用户对相关注册表项没有适当的权限,我对代码失败感到满意。

这个问题与这个关于检测注册表虚拟化的问题密切相关,但在这种情况下检测肯定是不够的。

4

1 回答 1

0

具有 UAC 感知清单的应用程序,无论是指定 asInvoker 还是 requireAdministrator,都不会被虚拟化。如果您对失败感到满意,请使用 asInvoker。

于 2010-06-24T19:25:46.743 回答