Переменная среды, чтобы заставить .NET-приложения работать как 32-битные - PullRequest
16 голосов
/ 06 марта 2009

Мне сказали, что есть переменная среды, которую вы можете установить, чтобы заставить .NET-приложения запускаться как 32-битные приложения в 64-разрядных версиях Windows. Знаете ли вы, что это такое, или знаете ссылку на это? Боюсь, что мой гугл-фу подвел меня сегодня (или его нет).

Я использую Resolver One (электронную таблицу .NET) и хочу получить доступ к некоторым 32-битным функциям без изменения исполняемого файла. Если я могу настроить это из переменной среды, тогда я могу получить доступ к 32-битной функциональности, когда это необходимо, но также при необходимости запустить как 64-битное приложение.

(ПРИМЕЧАНИЕ. По сути, я хочу иметь возможность переключаться между 32-битным или 64-битным приложением во время запуска, вместо принудительного запуска его во время компиляции.)

Спасибо

Ответы [ 4 ]

14 голосов
/ 06 марта 2009

У меня был ответ от Дино Вейхланда (Microsoft IronPython developer). У меня еще не было времени проверить это ...

Это COMPLUS_ENABLE_64BIT. Я думаю, что установка его в 0 отключает 64-бит.

Вы должны иметь возможность установить его как env var или добавить значение в HKLM \ Software \ Microsoft \ .NETFramework с именем «Enable_64Bit», типом REG_DWORD и значением 0, чтобы установить его глобально (вот как все COMPlus_ * работает). Этот может быть достаточно особенным (он должен быть запущен до создания процесса), что он должен быть установлен в ключе reg, но я не совсем уверен.

9 голосов
/ 06 марта 2009

Как насчет этой ссылки

Не совсем переменная среды, но просто используйте инструмент CoreFlags для переключения туда и обратно.

Для переключения на 32 бит:

CorFlags.exe TheApp.exe /32BIT+ 

Чтобы вернуться к 64-битной версии:

CorFlags.exe TheApp.exe /32BIT- 
2 голосов
/ 06 марта 2009

Проверьте это: http://www.hanselman.com/blog/BackToBasics32bitAnd64bitConfusionAroundX86AndX64AndTheNETFrameworkAndCLR.aspx

целевая платформа в диалоговом окне свойств проекта.

0 голосов
/ 19 мая 2012

Я собираюсь попробовать это в ближайшее время - в основном это exe-оболочка, которая работает в 32-битном режиме, а затем запускает из нее целевое приложение. 32-битный режим родителя должен заставить скомпилированный двоичный файл AnyCPU работать в 32-битном режиме. см http://lostechies.com/gabrielschenker/2009/10/21/force-net-application-to-run-in-32bit-process-on-64bit-os/

...