16

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

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

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

谢谢

4

4 回答 4

14

我得到了 Dino Veihland(Microsoft IronPython 开发人员)的回答。我还没来得及测试...

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

您应该能够将其设置为环境变量或向 HKLM\Software\Microsoft\.NETFramework 添加一个名为“Enable_64Bit”、类型为 REG_DWORD 和值 0 的值以全局设置它(这就是所有 COMPlus_*变量工作)。这个可能足够特别(它必须在创建进程之前运行),它必须在 reg 键中设置,但我并不完全确定。

于 2009-03-06T16:37:59.947 回答
9

这个链接怎么样

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

要切换到 32 位:

CorFlags.exe TheApp.exe /32BIT+ 

回到 64 位:

CorFlags.exe TheApp.exe /32BIT- 
于 2009-03-06T15:24:52.730 回答
2

检查这个:http ://www.hanselman.com/blog/BackToBasics32bitAnd64bitConfusionAroundX86AndX64AndTheNETFrameworkAndCLR.aspx

顺便说一句,项目属性对话框中的目标平台。

于 2009-03-06T15:06:58.170 回答
0

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

于 2012-05-18T20:32:37.830 回答