从32位应用程序读取64位注册表
我有一个为AnyCPU编译的ac#单元测试项目。我们的构建服务器是一台64位计算机,并安装了64位SQL Express实例。
测试项目使用与以下类似的代码来标识.MDF文件的路径:
private string GetExpressPath() {
RegistryKey sqlServerKey = Registry.LocalMachine.OpenSubKey( @"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" );
string sqlExpressKeyName = (string) sqlServerKey.GetValue( "SQLEXPRESS" );
RegistryKey sqlInstanceSetupKey = sqlServerKey.OpenSubKey( sqlExpressKeyName + @"\Setup" );
return sqlInstanceSetupKey.GetValue( "SQLDataRoot" ).ToString();
}
该代码在我们的32位工作站上可以正常工作,并且在构建服务器上也可以正常工作,直到我最近启用了NCover的代码覆盖率分析为止。因为NCover使用32位COM组件,所以测试运行程序(Gallio)作为32位进程运行。
检查注册表,下面没有“实例名称”键
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Microsoft SQL
Server
以32位模式运行的应用程序是否可以访问Wow6432Node外部的注册表?
回答:
您必须在创建/打开注册表项时使用KEY_WOW64_64KEY参数。但是,只有在直接使用API时,Registry类才能使用AFAIK。
这可能有助于您入门。
以上是 从32位应用程序读取64位注册表 的全部内容, 来源链接: utcz.com/qa/405159.html