Я должен был преобразовать скомпилированный 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"
, но это не сработало, и я также пытался передать параметры внутри кавычек, это тоже не сработало :( Буду признателен за любую помощь.
Run
из пакетаgolang.org/x/sys/windows/svc
. Возможно, ваша основная функция завершается без вызоваRun
, потому что ей не нравятся переданные ей параметры? - person Harry Johnston   schedule 30.06.2016sc
работает для других ваших исполняемых файлов, поэтому эти исполняемые файлы должны использовать пакет svc или его аналог. Вы не можете использовать sc непосредственно в исполняемом файле, который не был создан как служба. Это никогда не сработает. (Конечно, вы можете использоватьsc
косвенно, указав его наsrvany.exe
илиnssm.exe
или эквивалентное.) - person Harry Johnston   schedule 01.07.2016sc qc myservice
как для неработающей службы, так и для одной из работающих служб. (Вам также может быть полезно сравнить выходные данныеsc qc
при установке службы с помощьюsc
и при установке с помощьюnssm
.) - person Harry Johnston   schedule 01.07.2016