Любой способ override.NET имя службы Windows без перекомпиляции?
У меня есть исполняемый файл службы windows, который, как я знаю, написан на .NET, который мне нужно установить под другим именем службы, чтобы избежать конфликта. Установка не предоставляет в любом случае, чтобы указать имя службы. Если у меня есть только доступ к двоичному файлу, есть ли в любом случае переопределить имя службы, когда я устанавливаю его с помощью installutil?
5 ответов:
вы должны использовать InstallUtil? Вот команды, чтобы сделать то, что вы хотите с помощью SC:
sc create MyService binPath= "MyService.exe" DisplayName= "MyService" sc description MyService "My description"
неверно, что InstallUtil не позволяет настроить имя службы. Я делаю это все время вот так
InstallUtil.exe /servicename="<service name>" "<path to service exe>"
- добавить установщик проекта в свой сервис
добавить метод, чтобы получить имя 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