Чтение 64-битного реестра из 32-битного приложения

У меня есть проект модульного тестирования c #, который скомпилирован для AnyCPU. Наш сервер сборки - это 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?

86 голосов | спросил David Gardiner 10 J0000006Europe/Moscow 2009, 10:48:11

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132