Windows XP上的ServiceBase服务错误193:0xc1

hac*_*ket 2 c# service windows-services

我有一个使用C#ServiceBase类构建的服务.它在Windows 7和Windows Server 2008中运行时有效; 但是,它在Windows XP上不起作用.

在此输入图像描述

我使用了创建服务sc create PBUService binpath= "C:\PBULogger.exe".这是正确的道路.

没有什么东西在事件查看器下登录任何东西,我的异常处理代码也不会触发.

我想也许我没有安装正确的.NET版本,但我在XP机器上安装了4.0.但是,我使用Visual Studio Express 2012创建了这个项目,我非常确定默认使用.NET 4.5.这会导致问题吗?我正在使用的所有类都是4.0版.

我已将我的所有代码都删除到基本方法,但这仍然无效.这是我的代码:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

由于它没有登录事件查看器,它告诉我它甚至没有尝试启动该服务.

我在"HKEY_LOCAL_MACHINE/System/ControlSet001/Enum/Services/PBUService/Enum"下的服务注册表中找到了这些条目.

不太确定它意味着什么.

在此输入图像描述

谁知道发生了什么事?

sev*_*tov 10

您必须已经为.Net 4.5或64位架构(或两者)编译了exe.这是您从WinError.h遇到的错误代码的解释:

// %1 is not a valid Win32 application.
//
#define ERROR_BAD_EXE_FORMAT             193L
Run Code Online (Sandbox Code Playgroud)

确保已为x86平台或任何CPU编译它,并且在机器上安装了您编译的.Net Framework的任何版本.