呃,如何使 .NET 程序,在 64位 系统 中,以 32位 模式运行。

其实最简单的方法就是在解决方案中,把平台设为 x86 就好了哈~

 

但是今天遇到一个第三方的软件,它调用的一个 dll 是 32位 的,可能它没有测试过在 64位 系统下运行的情况,它在编译时是按默认的配置设为了 Any CPU。

但是在 64位 系统中以默认 64位 模式运行时,再调用 32位 的 dll 就报异常了。。。

于是想到的一个办法就是让它在 64位 系统中,以 32位 模式运行就好了~

 

在网上搜了一下,没想到 .NET 本身就提供了这个修改工具,叫做 CorFlags.exe 。

MSDN 文档:https://msdn.microsoft.com/zh-cn/library/ms164699(v=vs.110).aspx

此工具一般会随 Visual Studio 一同安装(其实是 .NET SDK 的一部分)。

 

1、所以打开开始菜单中的“VS 开发人员命令提示”工具:

 

2、直接输入 corflags 即可使用该工具(可以看到相关帮助内容):

 

3、首先是使用 corflags 程序集文件名 命令,不加任何参数,可以利用该工具查看 .NET 程序的相关信息:

好像主要是看 PE 那里是 PE32,然后 32BIT[REQ] 是 0,这个好像就代表了当前是 Any CPU 的状态。

 

4、然后可以使用 corflags 程序集文件名 /32BIT+ 命令,主要是添加了 /32BIT+ 参数,可以设置将该程序以 32位模式运行:

没有任何错误提示应该就是成功了~

 

5、可以用第3步的命令再检查一下设置的结果:

是吧,变化了~

这时候再运行此程序就是以 32位 模式运行了,再加载 32位 的 dll 文件也不会出错啦~

好样的。。。

好像没什么大用是吗。。。

时间: 2024-08-02 11:04:20

呃,如何使 .NET 程序,在 64位 系统 中,以 32位 模式运行。的相关文章

64位系统中开启32位应用,特别是OLEDB

IIS7 - Running 32-bit and 64-bit ASP.NET versions at the same time on different worker processes IIS7 - Running 32-bit and 64-bit ASP.NET versions at the same time on different worker processes Rate This  RakkiMK 3 Nov 2007 7:00 AM 24 In IIS6, this w

64位系统里注册32位软件

1.在64位系统里注册32位软件所需的一些dll会提示不兼容,大概因为32 位进程不能加载64位Dll,64位进程也不可以加载32的导致. 若要支持的32 位和64 位COM 注册和程序共存状态,需要WOW64 子系统. 故可以把这些32的dll.ax从C:\Windows\system32\复制到C:\Windows\sysWOW64\下注册即可. 如:regsvr32 C:\Windows\sysWOW64\netconn.dll 2.对于UAC.低权限用户应使用管理员帐户. 3.有时候注册

64位系统下注册32位dll文件

64位系统下注册32位dll文件 在64位系统里注册32位软件所需的一些dll会提示不兼容,大概因为32 位进程不能加载64位Dll,64位进程也不可以加载32的导致. 若要支持的32 位和64 位COM 注册和程序共存状态,需要WOW64 子系统. 故可以把这些32的dll.ax从C:\Windows\system32\复制到C:\Windows\sysWOW64\下注册即可. 如:regsvr32 C:\Windows\sysWOW64\MakerCom.dll 原文地址:https://w

win764位系统上让32位程序能申请到4GB内存方法

win764位系统上让32位程序能申请到4GB内存方法. 2016年09月18日 18:36:26 阅读数:1550 最近测试一个32位程序总是在1.2G左右内存时崩溃,怀疑是内存申请失败,本身32位程序只能申请到2GB内存,经过在网上找的各种方法和测试,如下方法可行,能申请到4GB内存. 1.管理员模式下运行CMD,输入:BCDEdit /set PAE forceenable Windows 这里的BCDEdit是关于命令行的启动配置编辑器.使用上面的命令,你能启用物理地址扩展(PAE),让

int在64位操作系统中占多少位?

仍然是32位. 曾经是这样的:16位操作系统中,int 占16位:在32位操作系统中,int 占32位.但是现在人们已经习惯了 int 占32位,因此在64位操作系统中,int 仍为32位.64位整型用 long long 或者 __int64

Windows 7/8 64位系统 不能注册32位dll 文件的解决方案

这几天碰到一个问题,运行一个易语言开发的软件出现以下错误.我的系统是 Windows7 64 位 专业版.在系统盘 windows/system32  下查找 dm.dll.但是没有这个文件.于是我到百度去查找相关答案,问的人有很多,答案却是相同的,我断定这些都是复制来粘贴去的,都没有一个好的答案,有些更是离谱的发疯了.到百度知道提问,也是复制粘贴到,牛头不对马嘴. 错误信息:不能载入OCX组件 "Dm1.0版1.0版",其组件或类型库文件名为"dm.dll",数字

Ubuntu 14.04 64位系统下安装32位软件(如:Beyond Compare 3.3.7.15876)

将bcompare解压缩到/usr/local/bin/后根据其readme文件现安装ia32-libs包提示其替换包,根据提示安装替换包后,运行install.sh.然后在命令行运行 安装目录/bin/bcompare 提示一系列类似如 libSM.so.6 => not found的提示信息,此时只要针对每个not found提示信息,在终端运行类似如:apt-get install libsm6:i386 的命令安装其32位支持包即可.

64位系统注冊32位的directshow filter文件

在SERVER2008上注冊自己写的directshow filter 的dll或者ax文件的时候总是提示 [Window Title] RegSvr32 [Content] 模块".\ball.dll"载入失败. 请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的 .DLL 文件是否有问题. 找不到指定的模块. [确定] 经过查阅相关文档,发现必须使用C:\Windows\SysWOW64目录下的cmd.然后输入regsvr32 F:\MyRtspFilter\bal

4GB的内存条在32位系统中只能显示为3GB左右的原因(转)

原帖地址:http://bbs.51cto.com/viewthread.php?tid=875012&extra=&page=1 1. 4GB的内存条在32位系统中只能显示为3GB左右的原因 第一个原因只会“吃掉”您一小部分的内存 众所周知,电脑中二进制中的换算关系是 1GB=1024MB,实际生产时,硬件厂商厂商的换算单位是1GB=1000MB,当电脑厂商告诉您,您电脑中的内存是1GB的时候,其实您的内存是1000MB,系统识别时,用1000处以1024,也就显示您的内存是0.976G