Как создать x64, Windows 7-совместимое приложение? - PullRequest
0 голосов
/ 30 марта 2010

У нас есть устаревшее приложение, которое обращается к реестру.Поскольку это 32-разрядное приложение, оно обращается к реестру в Windows 7 посредством виртуализации реестра при обращении к HKEY_LOCAL_MACHINE \ Software. У меня вопрос: какие настройки в Visual Studio нужно изменить, чтобы скомпилировать наши приложения, когда они обращаются к реестру «нормально», не проходя виртуализацию реестра?

Ответы [ 3 ]

1 голос
/ 31 марта 2010

Если вы внимательно прочитаете страницу виртуализации реестра, вы заметите, что виртуализация не ограничивается 64-битной Windows. В нем только говорится, что только 32-битные процессы будут виртуализированы. Но виртуализация осуществляется как в 32-, так и в 64-битной Vista и более поздних версиях. Так что название вопроса и тег x64 немного вводят в заблуждение.

Чтобы ответить на ваш вопрос, эта же страница гласит: «Виртуализация реестра отключена для следующих действий: ... Процессы, которые запросилиExecutionLevel, указанный в их манифестах.»

Таким образом, вы можете отключить виртуализацию, добавив файл манифеста в ваш исполняемый файл, который определяет уровень его выполнения. Существует по крайней мере статья Microsoft KB о том, как это сделать в Visual Studio 2005: http://support.microsoft.com/kb/944276.

0 голосов
/ 16 апреля 2010

Решение состояло в том, чтобы скомпилировать устаревшее приложение для целевой платформы x64. Приложение, которое явно нацелено на x64, не будет подвергаться виртуализации реестра.

0 голосов
/ 30 марта 2010

Почему вы не используете:

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

и добавьте доступ к реестру в файле customtrust.config.

или это не работает в Windows 7?

...