ServiceBase service error 193:0xc1 on Windows XP

c#, service, windows-services

Solution

You must have compiled your exe either for .Net 4.5 or for 64-bit architecture (or both). This is the explanation of error code you run into from WinError.h:

// %1 is not a valid Win32 application.
//
#define ERROR_BAD_EXE_FORMAT             193L

Make sure you have compiled it for x86 platform or Any CPU, and whatever version of .Net Framework you compiled against is installed on the machine.

Problem

I have a service that I've built using the C# ServiceBase class. It works when I run it in Windows 7 and Windows Server 2008; however, it doesn't work on Windows XP. I created the service using `sc create PBUService binpath= "C:\PBULogger.exe"`. This is the correct path. Nothing is logging in the Event Viewer under anything and my exception handling code doesn't fire either. I thought maybe I didn't have the correct .NET version installed, but I have 4.0 installed on the XP machine. However, I created this project using Visual Studio Express 2012, which I'm pretty sure uses .NET 4.5 by default. Is this causing an issue? All the classes I'm using are version 4.0. I have stripped down all my code to the base methods and this still doesn't work. Here is my code: ``` namespace PBULogger { class PBULoggerService : ServiceBase { protected override void OnStart(string[] args) { try { base.OnStart(args); } catch (Exception ex) { EmailUtility.sendEmail("Service Error", ex.Message + ex.StackTrace); } } protected override void OnStop() { base.OnStop(); } } ``` Since it doesn't log in the event viewer, it tells me it isn't even trying to start the service. I found these entries in my registry for the service under 'HKEY_LOCAL_MACHINE/System/ControlSet001/Enum/Services/PBUService/Enum'. Not really sure what it means. Anybody know what's going on?

Original source