强制.NET应用程序以32位模式运行的环境变量

16

我听说有一个环境变量可以强制在 x64 版本的 Windows 上以 32 位应用程序运行 .NET 应用程序。你知道它是什么,或者有相关参考资料吗?我今天很遗憾地没有找到(或者不存在)。

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

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

谢谢。

4个回答

15
我收到了 Dino Veihland(Microsoft IronPython 开发者)的答复。我还没有时间测试它...
答案是 COMPLUS_ENABLE_64BIT。 我认为将其设置为 0 可以禁用 64 位。
你应该能够将其设置为环境变量或在 HKLM\Software\Microsoft\.NETFramework 添加一个名为“Enable_64Bit”的值,类型为 REG_DWORD,值为 0,以全局设置它(这就是所有的 COMPlus_* 变量工作方式)。 这个可能很特殊(它必须在进程创建之前运行),所以它必须在 reg 键中设置,但我不是完全确定。

1
环境变量对我没有起作用,但是设置注册表项并重新启动后就可以了。 - fuzzyman
1
我的机器上注册表中的变量名为Enable64Bit(没有下划线)。别忘了重新启动。 - Radim Vansa
将Enable64Bit设置为0将强制任何.NET Framework软件以32位进程运行。不幸的是,一些编写不良的第三方软件可能会将此值设置为0。为什么呢?我不知道。可能是因为懒惰吧。问题是,这个键将影响整个系统,而不仅仅是他们的软件。如果您需要将应用程序作为32位进程运行,只需在您的项目中使用<Prefer32Bit>True</Prefer32Bit>,不要更改系统范围的属性。你知道你是谁!那些将自定义文件放在GAC中的程序员们 :( - undefined

9

嗯...这正是我想避免的,但可能没有选择 - 谢谢。 - fuzzyman
@Eric:太棒了;我删掉了我的评论。 - Ruben Bartelink

2

不,这是关于在编译时设置32位性而不是在运行时设置的。我有一个.NET应用程序,我有时想将其作为32位应用程序运行。 - fuzzyman

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接