6

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

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

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

有人可以帮我解决这个问题吗?提前致谢...

4

3 回答 3

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。

于 2013-01-29T08:12:40.607 回答
2

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

Visual Studio 2015 项目属性窗口

于 2016-02-11T05:58:33.903 回答
0

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

例如,代替 Service 的 ImagePath 注册表项是:

D:\My Folder\My File.thing

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

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

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

D:\myfold~1\My File.thing

于 2021-04-21T11:16:38.413 回答