我正在将传统的vc6 c++ Windows Service应用程序转换为Visual Studio 2022
转换完成,如果我以Admin权限打开CMD提示符,我可以使用以下命令安装服务:
Service.exe/安装
立即安装并正确启动。
但是,我需要在安装脚本中安装它,该脚本通过调用包含启动它们的命令的批处理文件来加载一堆服务。它以提升的权限运行。但是,当它到达上面的行(Service.exe/Install)时,它会挂起。没有错误信息,我甚至不能使用CTRL + c终止它。唯一的方法是关闭CMD提示符。服务未安装
当批处理文件挂起时,我的服务不会出现在任务管理器的进程列表中。
我试过在批处理文件中添加服务的完整路径,但没有区别。从提升的命令提示符(而不是安装程序脚本)运行这个批处理文件会遇到同样的问题。
我的头发都快被扯出来了(现在几乎秃顶了:-))-有人能提供任何建议吗?
感谢安迪
调试发现启动代码中存在逻辑错误。
基本上,直接调用Service.exe/Install从命令行只传递"Service.exe/Install"作为命令行,而从批处理文件调用它/CreateProcess()将整个路径传递到命令行中的服务,解析器没有考虑到这一点。也许它在旧的Windows版本中表现不同,但是解析器确实是写得很糟糕。我很高兴是我写的:-)