我被告知有一个环境变量可以设置为强制.NET应用程序在x64版本的Windows上作为32位应用程序运行。你知道它是什么,或者知道它的参考吗?我担心我的google-fu今天失败了(或者它不存在)。

我正在使用Resolver One(一个.NET电子表格),并希望在不修改可执行文件的情况下访问某些仅32位的功能。如果我可以从环境变量配置它,那么我可以在需要时访问32位功能,但在需要时也可以作为64位应用程序运行。

(注意:实际上,我希望能够在启动时切换应用程序是以32位还是64位运行,而不是在编译时强制它。)

由于

有帮助吗?

解决方案

我得到了Dino Veihland(微软IronPython开发人员)的回答。我还没有时间测试它......

这是COMPLUS_ENABLE_64BIT。我认为将其设置为0会禁用64位。

您应该能够将其设置为env var或将值添加到HKLM \ Software \ Microsoft \ .NETFramework,名称为“Enable_64Bit”,类型为REG_DWORD,值为0以全局设置(这是如何所有COMPlus_ * vars工作)。这个可能足够特别(它必须在创建进程之前运行),它必须在reg键中设置,但我不完全确定。

其他提示

怎么样此链接

不完全是环境变量,只需使用CoreFlags工具来回切换。

切换到32位:

CorFlags.exe TheApp.exe /32BIT+ 

回到64位:

CorFlags.exe TheApp.exe /32BIT- 

我很快就会尝试这个 - 基本上是一个以32位运行的exe包装器,然后从它启动你的目标应用程序。父级的32位模式应强制AnyCPU编译的二进制文件以32位运行。见 http://lostechies.com/gabrielschenker/2009/10/21/force-net-application-to-run-in-32bit-process-on-64bit-os/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top