【问题标题】:Error 193: '%1 is not a valid Win32 application on Windows Server 2003错误 193: '%1 不是 Windows Server 2003 上的有效 Win32 应用程序
【发布时间】:2023-04-07 05:26:02
【问题描述】:

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

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

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

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

【问题讨论】:

  • 最好的猜测诊断是您的 x86 服务正在尝试加载 64 位 DLL。错误代码 (0xc1) 等同于 BadImageFormatException。使用 SysInternals 的 ProcMon 查看正在加载的 DLL。
  • 谢谢,我试试看。

标签: windows service


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为您使用的.net framework 和windows server 2003 存在可操作性问题。您使用.net 4.5 吗? Windows server 2003 不能运行以 net framework 4.5 为目标的应用程序。

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

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

    【讨论】:

      【解决方案3】:

      同样的原始问题,但 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-07
        • 1970-01-01
        • 1970-01-01
        • 2017-03-16
        • 2015-09-29
        • 2013-02-28
        • 2020-02-19
        • 1970-01-01
        相关资源
        最近更新 更多