2009-08-24 104 views
4

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

换句话说,我在寻找something analogous to KEY_WOW64_64KEYreg.exe REG_KEY_DONT_VIRTUALIZE来表明我不想在任何情况下进行虚拟化。或者是否有某种形式的规范化相关的语法,我可以使用它强制它你指定一个> 260 char文件名的方式吗?

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

此问题与[注册表虚拟化](Detecting registry virtualization)上的这个问题有很大关系,但是在这种情况下检测肯定是不够的。

回答

0

具有UAC感知清单的应用程序(不论是指定asInvoker还是requireAdministrator)都未虚拟化。如果你没有问题,请使用asInvoker。

+0

嗨凯特,谢谢你的回答。不幸的是,在这个问题中的[“在广义组件的范围内]]条件是为了表明这不在我的控制之内,因此我的问题。 – 2010-06-25 08:14:21

+0

但是我敢打赌,你有很多我的其他开放深奥问题的答案,只是等待跳出 - 如果你的DNR eps是任何东西的话:D – 2010-06-25 08:23:39

+0

哦,亲爱的,你可能不得不前往COM高程绰号领土。如果有的话,我不确定.NET的等价物是什么。 – 2010-06-25 11:09:13