从32位应用程序读取64位注册表

从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外部的注册表?


喵喵时光机
浏览 749回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP