错误193:';%1不是Windows Server 2003上的有效Win32应用程序

错误193:';%1不是Windows Server 2003上的有效Win32应用程序,windows,service,Windows,Service,我想得到一些帮助,我在尝试启动windows服务时遇到了这个错误,这让我发疯。详情如下: 我在VB.NET(VS 2012)上开发了一个Windows服务,它是为x86机器编译的 我使用InstallUtil和“SC CREATE”命令在客户的服务器上安装服务(在WindowsServer2003下运行) 当我尝试启动服务时,收到以下错误消息:“无法在本地计算机上启动服务。错误193:0xc1” 我在事件查看器中查找了一些线索,但找不到任何非常有用的信息:在“应用程序”选项卡中,服务没有记录任

我想得到一些帮助,我在尝试启动windows服务时遇到了这个错误,这让我发疯。详情如下:

  • 我在VB.NET(VS 2012)上开发了一个Windows服务,它是为x86机器编译的
  • 我使用InstallUtil和“SC CREATE”命令在客户的服务器上安装服务(在WindowsServer2003下运行)
  • 当我尝试启动服务时,收到以下错误消息:“无法在本地计算机上启动服务。错误193:0xc1”
  • 我在事件查看器中查找了一些线索,但找不到任何非常有用的信息:在“应用程序”选项卡中,服务没有记录任何记录,因此我假设它甚至没有运行一行代码。在“系统”选项卡中,服务控制管理器记录了带有以下错误消息的记录:“%1不是有效的Win32应用程序。”
我在网上做了很长时间的研究,提供的唯一解决方案是检查Windows注册表以找到服务的ImagePath,并在路径的开头和结尾添加一些引号。这应该可以解决问题,但对我来说不起作用。我已经多次修改ImagePath(我添加和删除了引号,尝试使用双a三引号),但没有得到任何积极的结果


有人能帮我吗?提前感谢…

我认为您使用的.net framework和windows server 2003存在可对抗性问题。您是否使用.net 4.5? Windows server 2003无法运行以net framework 4.5为目标的应用程序


因此,您可以将目标框架更改为4.0。

我的问题是因为在项目属性的应用程序窗格中将我的服务项目配置为类库,而不是Windows应用程序


相同的原始问题,但Win Server 2019也未通过引用注册表ImagePath解决。但是,通过对路径的文件夹部分使用NTFS符号链接解决了此问题

例如,服务的ImagePath注册表项不是:

D:\My Folder\My File.thing

在提升的权限Cmd提示符下创建Windows符号链接:

d:>mklink/d“我的折叠~1”“我的文件夹”

然后使用注册表ImagePath中的符号链接


D:\myfold~1\My File.thing

最好的诊断是您的x86服务正在尝试加载64位DLL。错误代码(0xc1)相当于BadImageFormatException。使用SysInternals的ProcMon查看加载了哪些DLL。谢谢,我将尝试一下。