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

时间:2013-01-28 15:33:15

标签: windows service

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

  • 我有一个在VB.NET(VS 2012)上开发的Windows服务,它是为x86机器编译的。
  • 我使用InstallUtil和“SC CREATE”命令在客户的服务器上安装服务(在Windows Server 2003下运行)。
  • 当我尝试启动该服务时,收到以下错误消息:“无法在本地计算机上启动该服务。错误193:0xc1”
  • 我在事件查看器中查找了一些线索,但我找不到任何非常有用的信息:在“应用程序”选项卡中,服务没有记录任何记录,所以我认为它甚至没有运行一行代码。在“系统”选项卡中,服务控制管理器记录了记录,并显示以下错误消息:“%1不是有效的Win32应用程序。”

我在网上进行了长时间的研究,提供的唯一解决方案是检查Windows注册表以找到服务的ImagePath,并在路径的开头和结尾添加一些引号。这应该可以解决问题,但在我的情况下不起作用。我已经修改了几次ImagePath(我添加并删除了引号,尝试使用双三引号)但我没有得到任何正面结果。

有人可以帮我吗?提前谢谢......

3 个答案:

答案 0 :(得分:6)

我认为你使用的.net框架和windows server 2003存在兼容性问题。你使用.net 4.5吗? Windows Server 2003无法运行以net framework 4.5为目标的应用程序。

http://www.microsoft.com/visualstudio/eng/products/compatibility

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

答案 1 :(得分:1)

我的问题是由于我的服务项目在项目属性的“应用程序”窗格中配置为类库而非 Windows应用程序

Visual Studio 2015 Project Properties Window

答案 2 :(得分:0)

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

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

D:\My Folder\My File.thing

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

d:>mklink /D "myfold~1" "My Folder"

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

D:\myfold~1\My File.thing