I have a Windows Service that I'm having this issue with.
Version : v4.0.30319
CLR Header: 2.5
PE : PE32+
CorFlags : 0x1
ILONLY : 1
32BITREQ : 0
32BITPREF : 0
Signed : 0
I even tried running Corflags with the 32BITREQ-
and 32BITPREF-
flags to make sure it was set to what it's supposed to be but no dice. In the taskManager it shows up as:
MyServiceName (32 bit)
Service was installed with Topshelf 3.0 and is running on Windows Server 2012 R2 Standard. What's going on here?
I had this issue when a previous version of the service had been 32 bit. I knew the currently installed one wasn't (checked CORFLAGS), but the process associated with the service was being created as 32 bit anyway, and for the life of me I couldn't work out why.
After a reboot the problem went away. I wonder if the Service Control Manager 'remembers' the bitness for each service, as a startup optimization (or something).
Maybe your installation tool is using 32 bit installutil
to install the process? As I understand from this article
using 32 bit installutil
results in forcing the executable to run as 32 bit in a 64 bit OS.
This part of the article in particular seems to say so:
To get around this problem, please run installutil.exe outside of the appropriate Framework/Framework64 directory. If you have a snap-in built for ILONLY (ILONLY indicates that the executable contains pure IL code and can run either as 32-bit or as a 64-bit process), but want to register it under the wow64 hive, use installutil.exe that is available in the directory %windir%\\microsoft.net\\framework\\v2.nnn For the 64-bit hive registration, run installutil.exe from the directory %windir%\\microsoft.net\\framework64\\v2.nnn
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.