当前位置: 首页 > 知识库问答 >
问题:

安装了新的Windows服务,无法启动:“系统错误2...系统找不到指定的文件”

阳建弼
2023-03-14

我已经成功安装了其他几个自定义。NET windows服务。我最近编写的一个新程序与其他程序非常相似,虽然安装时没有出错--用服务控制器启动它时,它无法以错误对话框启动:系统错误2...系统找不到指定的文件。

经过时间和惊愕,我唯一能想到的关于这个服务的显著不同之处是,路径和可执行名称比我的任何其他服务都要长至少10个字符。在缩短路径和。exe名称并重新安装时,服务运行良好:没有错误!我只能假设我以前的路径、服务或.exe名称太长。

此外,我还使用了exe中内置的一些借来的“服务驱动程序”代码,通过win API调用来处理服务控制器的安装/卸载。可能是服务驱动程序模块中隐藏了字符限制。

我找不到任何与windows相关的文档来确认路径或服务名是否有系统绑定字符限制,我已经超过了这个限制。当时间允许时,我会深入研究服务驱动程序,看看这是否是问题所在。与此同时,我欢迎任何见解。

共有1个答案

胡景焕
2023-03-14

我尝试了一些测试服务,发现并不是任何属性的长度导致了我的问题(“系统错误2...系统找不到指定的文件”)。我的内置服务安装程序使用三个属性:ServiceName、ServiceTitle、ServiceDescription。在安装时,我发现它将完整的服务路径写入注册表,但它不仅仅使用实际的exe(程序集)名称,而是使用ServiceName属性构建路径!我的问题是ServiceName和程序集名称不匹配,因此找不到文件。我使用powershell注册表查询来公开路径,最后注意到了不匹配。当我第一次注意到这个问题时,我没有注意到当我将服务名称从原来的名称中缩短时--我只是使用了程序集名称而不使用。exe,这实际上是修复了它,而不是简单地缩短它。

 类似资料:
  • 问题内容: 我正在用Java编写一个程序,该程序将执行winrar并将一个供我使用的jar文件解压缩到该文件夹​​中。我的Java代码是这样的 执行此操作时,出现此错误 谁能告诉我为什么会遇到这样的问题。为了使其起作用,我需要在代码中进行哪些更改? 问题答案: 假设位于中,则能够找到它,如果没有,则需要提供到它的完全限定路径,例如,假设已安装在其中,则需要使用类似… 就个人而言,我建议您使用它,因

  • 问题内容: 我在Windows和Linux中运行的Pydub模块有问题。当我尝试这样打开mp3文件时: 控制台向我显示下一条消息: WindowsError:[错误2]系统找不到指定的文件 但是…我将文件(test.mp3)与脚本放在同一文件夹中,名称正确。 为什么我有这个问题?(在Linux中,具有相同的错误) 问题答案: 确保已安装 http://www.ffmpeg.org/。您可以从此官方

  • 按照http://maven.apache.org/download.cgi上的所有说明操作 Java版本:1.7.0_03,供应商:Oracle Corporation Java Home:C:\程序文件\Java\jdk1.7.0_03\jre 默认区域设置:en_US,平台编码:Cp1252 操作系统名称:“Windows 7”,版本:“6.1”,arch:“AMD64”,系列:“Windo

  • keytool错误:Java . io . file not found exception:API . sepa . express . CRT(系统找不到指定的文件) 我尝试了在堆栈溢出中找到的各种示例。 和 已尝试以管理员身份使用cmd。我已将我的证书文件放在桌面上。当我试图复制时: C: \程序文件\Java\jdk1.8.0_60\jre\lib\security 它不接受证书文件。 完

  • 我对Spark和Python是新手。我已经在Windows上安装了python 3.5.1和Spark-1.6.0-bin-Hadoop2.4。 当我从python shell执行sc=SparkContext(“local”,“simple app”)时,我得到了以下错误。 文件“”,第1行,在 文件“C:\spark-1.6.0-bin-hadoop2.4\python\pyspark\con

  • 当我运行下面的代码时,我得到错误: 无法运行程序“query . sh”:CreateProcess error = 2,系统找不到指定的文件,请检查以下代码 我不确定如何诊断其故障的根本原因。我应该怎么做才能解决问题?