【发布时间】:2025-11-26 20:10:02
【问题描述】:
我已经成功安装了其他几个自定义的 .Net windows 服务。我最近写的一个新的与其他的非常相似,虽然它安装没有错误 - 在使用服务控制器启动它时,它无法以错误对话框启动:系统错误 2 ...系统找不到指定的文件。
经过时间和惊愕之后,我唯一能想到的与此服务显着不同的是路径和可执行文件名称至少比我的其他任何服务长 10 个字符。在缩短路径和 .exe 名称并重新安装时,服务运行良好:没有错误!我只能假设我以前的路径或服务或 .exe 名称太长。
另外,值得一提的是,我使用了一些借用的内置到我的 exe 中的“服务驱动程序”代码,通过 win API 调用处理服务控制器的服务安装/卸载。可能是该服务驱动程序模块中隐藏了字符限制。
我找不到任何与 Windows 相关的文档来确认我已超出的路径或服务名称是否存在系统绑定字符限制。当时间允许时,我会深入研究服务驱动程序,看看这是否是问题所在。同时,我欢迎任何见解。
【问题讨论】:
-
缩短之前的路径总长度是多少。还有你的路径有什么不寻常的字符吗?如果您还可以提供所使用的初始路径,这也将有助于任何尝试回答您的查询的人
-
工作服务现在的可执行名称长度为 17。不幸的是,我没有保存旧的,但它接近 30 或 35 个字符。服务名称(服务控制器名称)相同(不带 .exe 扩展名),服务控制器中显示的服务标题约为 40-50 个字符。 exe 的总本地完整路径大约有 100 个字符,现在它正在工作,路径是 67 个字符。我可以编写一些测试项目并改变长度来检查失败。主要是想知道是否有一些已知的记录限制。
-
如果不知道确切的路径长度或最初的设置方式,很难提供帮助。仅供参考,此类问题应发布在Server Fault
标签: windows windows-services servicecontroller