У меня есть исполняемый файл службы Windows, который, как мне известно, написан на .NET, который мне нужно установить под другим именем службы, чтобы избежать конфликта. В любом случае установка не укажет имя службы. Если у меня есть только доступ к двоичному файлу, есть ли способ переопределить имя службы, когда я устанавливаю его с помощью installutil?
Любой способ переопределить имя службы Windows.NET без перекомпиляции?
Ответ 1
Вам нужно использовать InstallUtil? Вот команды, которые нужно делать с помощью sc:
sc create MyService binPath= "MyService.exe" DisplayName= "MyService"
sc description MyService "My description"
Ответ 2
Неверно, что InstallUtil не позволяет вам настроить имя службы. Я делаю это все время, как это
InstallUtil.exe /servicename="<service name>" "<path to service exe>"
Ответ 3
- Добавить программу установки на вашу службу
-
Добавить метод для получения имени CustomService
private void RetrieveServiceName() { var serviceName = Context.Parameters["servicename"]; if (!string.IsNullOrEmpty(serviceName)) { this.SomeService.ServiceName = serviceName; this.SomeService.DisplayName = serviceName; } }
-
вызывать установку и удаление
public override void Install(System.Collections.IDictionary stateSaver) { RetrieveServiceName(); base.Install(stateSaver); } public override void Uninstall(System.Collections.IDictionary savedState) { RetrieveServiceName(); base.Uninstall(savedState); }
-
installutil /servicename="My Service [SysTest]" d:\pathToMyService\Service.exe
Ответ 4
Это сработало для меня!
Я надеюсь, что кто-то сможет это использовать.
Ответ 5
Попробуйте установить службу с помощью sc.exe. Быстрый поиск даст много документации. С помощью этого инструмента легко изменить существующие службы и/или добавить новые, включая имена.
Изменить: я устанавливаю свои сервисы .NET с помощью этого инструмента.