Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is my 64 bit service running as 32 bit?

I have a Windows Service that I'm having this issue with.

  • In Visual Studio I've set its Platform Target to 64 bit
  • I've run CorFlags to verify that it is set correctly, I get this:
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?

like image 627
snappymcsnap Avatar asked Nov 09 '22 06:11

snappymcsnap


1 Answers

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).

like image 169
piers7 Avatar answered Nov 14 '22 22:11

piers7