我需要将一个GoLang编译的.exe文件转换为Windows服务,但由于该服务从外部执行需要9个参数,所以我决定使用SC将.exe文件作为服务运行。我的语法是:
sc create myservice binPath= "\"PATH\file.exe\" -param1=value -param2=value -param3=value...-param9=value" displayname= "MyServer" start= auto
服务已成功创建,但当我尝试启动它时,它会失败并显示“服务未能及时响应”的错误信息。
但是,当我使用nssm语法创建相同的服务时,却没有出现这个问题。
nssm install myservice "PATH\file.exe" -param1=value -param2=value -param3=value...-param9=value
它一直在工作,我也从我的服务中获取到了响应,但我不知道问题是SC中的语法还是我的服务中的问题...
我甚至尝试了许多可能的方法,比如删除 \ " 并直接给出参数,例如 binPath=“PATH/file.exe -param1=value -param2=value...param9=value”
,但它没有起作用,我还尝试将参数放在引号内传递,这也没用 :( 任何帮助都将不胜感激。
sc
对你的其他可执行文件有效,所以那些可执行文件必须使用了 svc 包或者类似的东西。对于没有被构建成服务的可执行文件,你不能直接使用 sc。这是行不通的。(当然,你可以通过将其指向srvany.exe
或nssm.exe
或类似的方式来间接使用sc
。) - undefinedsc qc myservice
的输出结果,分别针对无法工作的服务和其中一个正常工作的服务。(当您使用sc
安装服务和使用nssm
安装服务时,比较和对比sc qc
的输出结果可能也会有所帮助。) - undefined