我有一个Windows服务,我遇到了这个问题。
Version : v4.0.30319
CLR Header: 2.5
PE : PE32+
CorFlags : 0x1
ILONLY : 1
32BITREQ : 0
32BITPREF : 0
Signed : 0
我甚至尝试使用32BITREQ-
和32BITPREF-
标志运行Corflags,以确保它设置为它应该是什么但没有骰子。在taskManager中,它显示为:
MyServiceName(32位)
Service已与Topshelf 3.0一起安装,并且正在Windows Server 2012 R2 Standard上运行。这里发生了什么?
答案 0 :(得分:1)
当服务的之前版本为32位时,我遇到了此问题。我知道当前安装的没有(检查过CORFLAGS),但是与服务相关的进程无论如何都被创建为32位,并且在我的生活中我无法理解为什么。
重启后问题就消失了。我想知道服务控制管理器是否“记住”每项服务的位数,作为启动优化(或其他)。
答案 1 :(得分:0)
也许您的安装工具使用32位installutil
来安装该进程?据我所知this article
使用32位installutil
会导致可执行文件在64位操作系统中以32位运行。
本文的这一部分特别如此:
要解决此问题,请在相应的Framework / Framework64目录之外运行installutil.exe。如果你有一个为ILONLY构建的管理单元(ILONLY表示可执行文件包含纯IL代码并且可以作为32位或64位进程运行),但想要在wow64配置单元下注册它,请使用installutil。目录%windir%\ microsoft.net \ framework \ v2.nnn中提供的exe文件对于64位配置单元注册,请从%windir%\ microsoft.net \ framework64 \ v2.n.n.n目录运行installutil.exe。