C # зарегистрировать один и тот же сервис Windows с разными параметрами - PullRequest
2 голосов
/ 13 января 2011

Мне нужно создать много служб 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

Я не могу найти способ сделать это, кроме непосредственного редактирования реестра.

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Я нашел лучший способ сделать это: sc.exe

sc.exe create WcfService1 binPath= "MyService.exe /run WcfService1.dll"

так что мне просто нужно создать bat / cmd для запуска этой команды.

0 голосов
/ 13 января 2011

По своей природе служба предназначена для того, чтобы иметь дело с определенной вещью, и наличие нескольких экземпляров, как правило, не очень хорошая идея. Тем не менее, можно делать то, что вы хотите; например, вы можете одновременно запустить несколько экземпляров SQL Server.

Прочитайте это . По сути, вашему установщику службы может быть предоставлен некоторый параметр командной строки или другой настраиваемый аргумент, который сообщит ему имя, под которым он должен зарегистрироваться в Windows как служба. Обычно это происходит автоматически на основе свойств установщика службы и исполняемого файла службы, но все это также может быть установлено динамически. Измените имя, и вы измените регистрацию службы. Имя службы (AFAIK) должно проверяться исполняемым файлом, запускаемым как служба, которая может сообщить ему службу WCF, за которую она отвечает.

...