C# Зарегистрируйте одну и ту же службу Windows с разными параметрами
-
10-10-2019 - |
Вопрос
Мне нужно создать множество сервисов Windows для размещения множества услуг WCF, чтобы я мог остановить один (например, для его обновления) и сохранить другую работу.
Поскольку я не хочу создавать службу Windows для каждой услуги WCF, который у меня есть, я пытаюсь создать приложение C#, которое может зарегистрироваться в качестве службы Windows, но с различными параметрами (и, конечно, имени службы).
Например, называть это таким образом:
MyService.exe /install WcfService1.dll
MyService.exe /install WcfService2.dll
Это создает два разных сервиса Windows, подобных этим:
WcfService1 -> MyService.exe /run WcfService1.dll
WcfService2 -> MyService.exe /run WcfService2.dll
Я не могу найти способ сделать это, кроме редактирования прямого реестра.
Решение
Я нашел более приятный способ сделать это: sc.exe
sc.exe create WcfService1 binPath= "MyService.exe /run WcfService1.dll"
Поэтому мне просто нужно создать летучую мышь/CMD, чтобы запустить эту команду.
Другие советы
По своей природе, сервис предназначен для того, чтобы быть процессом для работы с определенной вещью, и наличие нескольких экземпляров, как правило, не является хорошей идеей. Тем не менее, можно сделать то, что вы хотите; Например, вы можете иметь несколько экземпляров SQL Server, работающего за один раз.
Прочитать это. Анкет По сути, вашему установщику услуг может быть предоставлен какой-то командная строка или другой настраиваемый аргумент, который сообщит ему имя, на которое он должен зарегистрироваться в Windows в качестве услуги. Обычно это автоматическое, основываясь на свойствах Service Installer и Service Executive, но все это также может быть установлено динамически. Измените имя, и вы измените регистрацию услуг. Имя Сервиса должно быть (AFAIK), осматриваемое исполняемой, запускаемым в качестве службы, что может сказать ему услугу WCF, за которую он несет ответственность.