我们有一个访问注册表的旧应用程序。由于它是一个32位应用程序,因此在引用HKEY_LOCAL_MACHINE SOFTWOR年时,通过注册表虚拟化访问Windows 7中的注册表。 我的问题是,在Visual Studio中,我们需要修改哪些设置,以编译我们的应用程序“正常”访问注册表而无需访问注册表虚拟化?

有帮助吗?

解决方案 3

你的意思是这样?

$web = Get-SPWeb http:/SC/site
$web.WebTemplate + " " + $web.WebTemplateId
$web.close()
.

其他提示

如果您仔细阅读注册表虚拟化页面,您会注意到虚拟化不限于64位窗口。它仅指出只有32位流程才能虚拟化。但是虚拟化是在32位和64位远景以及后来进行的。因此,问题标题和X64标签有些误导。

为了回答您的问题,同一页面说:“注册表虚拟化对于以下内容是禁用的:...已要求在其清单中指定的executionlevel的过程。”

因此,您可以通过在指定其执行级别的可执行文件中添加清单文件来禁用虚拟化。至少有一篇有关在Visual Studio 2005中如何做的Microsoft KB文章: http://support.microsoft.com/kb/944276.

你为什么不使用:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\...");
return (string)key.GetValue("blah");

并在customTrust.config文件中添加对注册表的访问。

还是在Windows 7中起作用?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top