Любой способ override.NET имя службы Windows без перекомпиляции?


У меня есть исполняемый файл службы windows, который, как я знаю, написан на .NET, который мне нужно установить под другим именем службы, чтобы избежать конфликта. Установка не предоставляет в любом случае, чтобы указать имя службы. Если у меня есть только доступ к двоичному файлу, есть ли в любом случае переопределить имя службы, когда я устанавливаю его с помощью installutil?

5 60

5 ответов:

вы должны использовать InstallUtil? Вот команды, чтобы сделать то, что вы хотите с помощью SC:

sc create MyService binPath= "MyService.exe" DisplayName= "MyService"  
sc description MyService "My description"

Ссылка:http://support.microsoft.com/kb/251192

неверно, что InstallUtil не позволяет настроить имя службы. Я делаю это все время вот так

InstallUtil.exe /servicename="<service name>" "<path to service exe>"
  1. добавить установщик проекта в свой сервис
  2. добавить метод, чтобы получить имя CustomService

    private void RetrieveServiceName() 
    {
        var serviceName = Context.Parameters["servicename"];
        if (!string.IsNullOrEmpty(serviceName))
        {
            this.SomeService.ServiceName = serviceName;
            this.SomeService.DisplayName = serviceName;
        }
    }
    
  3. вызов на установку и удаление

    public override void Install(System.Collections.IDictionary stateSaver)
    {
       RetrieveServiceName();
      base.Install(stateSaver);
    }
    
    
    public override void Uninstall(System.Collections.IDictionary savedState)
    
    {
       RetrieveServiceName();
       base.Uninstall(savedState);
    }
    
  4. installutil /servicename=”My Service [SysTest]” d:\pathToMyService\Service.exe

источник

enter image description here

Это точно сработало для меня!

Я надеюсь, что кто-то может использовать это.

попробуйте установить службу с помощью sc.исполняемый. Быстрый поиск даст много документации. С помощью этого инструмента можно легко изменять существующие службы и/или добавлять новые, включая имена.

Edit: я устанавливаю свои службы .NET с помощью этого инструмента.