在64位计算机上强制让.NET Windows服务以32位运行

44

我得到了一个引用只能在32位系统上运行的COM组件的Windows服务。由于我的机器是x64,因此该服务尝试启动,但无法创建COM组件并最终失败。

我没有源代码,只有.exe文件。有没有办法在win64机器上强制将服务以32位模式启动?

2个回答

73
也许.NET工具corflags能够帮助你:

corflags /32bit+ myservice.exe


+1,非常好的答案,但选项应该放在最后: 用法:Corflags.exe程序集[选项] - BQ.
1
我遇到了一个问题,收到了以下消息:corflags : error CF001 : Could not open file for writing解决方法是添加 /force。 - David Knight
同样的问题也会出现在作为.dll构建的服务中,并通过WcfSvcHost在VS中进行调试。在这种情况下,您可以在WcfSvcHost本身上切换标志。[请参阅文章](http://coding.abel.nu/2012/04/debugging-a-wcf-service-using-a-32-bit-dll/) - quetzalcoatl

2

corflags.exe是随Windows SDK而不是.NET一起提供的。

只需要对目标服务exe运行一次corflags.exe,服务将在此后以32位模式运行。

需要注意的是所需的参数为/32bitreq+或/32bitpref+。

运行命令为:corflags.exe /32bitreq+ myservice.exe


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