Установите службу Windows с произвольным именем - PullRequest
6 голосов
/ 23 декабря 2010

У меня есть exe-файл со службой Windows.Для его установки я использую команду:

installutil myService.exe / ShowCallStack

Затем я вижу «service1», указанный в окне «Службы».

Мой вопросесли возможно установить 2 экземпляра одного и того же сервиса (используя один и тот же exe), но с разными именами.Я хочу сделать это без изменения исходного кода.

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 декабря 2010

Имеет ли ваша служба класс ProjectInstaller?Если вы добавите ProjectInstaller к своей службе, то вы можете отредактировать свойство DisplayName * ProjectInstaller ServiceInstaller .Это изменит имя с «Service1» на то, что вы хотите.Пошаговое руководство по ProjectInstallers можно найти на MSDN здесь .

0 голосов
/ 07 декабря 2012

можно использовать InstallUtil.exe.config во время установки службы, поэтому мой грязный хак выглядел так:

В ProjectInstaller.designer.cs

        this.Service1.Description = ConfigurationManager.AppSettings["ServiceDescription"] != null ? ConfigurationManager.AppSettings["ServiceDescription"] : "bla, bla, bla";
        this.Service1.DisplayName = ConfigurationManager.AppSettings["DisplayName"] != null ? ConfigurationManager.AppSettings["DisplayName"] : "Service One";
        this.Service1.ServiceName = ConfigurationManager.AppSettings["ServiceName"] != null ? ConfigurationManager.AppSettings["ServiceName"] : "Service1";

в InstallUtil.exe.config:

<configuration><appSettings><add key="ServiceName" value="Service1" /><add key="DisplayName" value="Service One" /><add key="ServiceDescription" value="bla, bla, bla" /></appSettings></configuration>

не могу понять, как разместить XML здесь

ура

0 голосов
/ 23 декабря 2010

Я использовал что-то вроде приведенного ниже сценария в прошлом.Отредактируйте имена служб, сохраните их как VBS и запустите.

Const ExistingServiceName = "Service1"
strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer &  "\root\cimv2")
set objExistingService = objWMIService.Get("Win32_Service.Name='" & ExistingServiceName & "'")

Set objService = objWMIService.Get("Win32_BaseService")

Const NewServiceName = "Service2"

errReturn = objService.Create (NewServiceName, NewServiceName, objExistingService.PathName, OWN_PROCESS ,NOTIFY_USER ,"Manual" , NOT_INTERACTIVE ,".\LocalSystem" ,"")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...