C#使用不同的参数注册相同的Windows服务

时间:2011-01-13 16:33:21

标签: c# windows-services wcf-hosting

我需要创建许多Windows服务来托管许多WCF服务,这样我就可以停止一个(例如更新它)并保持另一个运行。

由于我不想为我拥有的每个WCF服务创建一个Windows服务,我正在尝试创建一个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 个答案:

答案 0 :(得分:4)

我找到了一个更好的方法:sc.exe

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

所以我只需要创建一个bat / cmd来启动这个命令。

答案 1 :(得分:0)

就其本质而言,服务被设计为处理特定事物的首选过程,并且具有多个实例通常不是一个好主意。但是,你可以做你想做的事情;例如,您可以同时运行多个SQL Server实例。

阅读this。基本上,您的服务安装程序可以获得一些命令行或其他可配置参数,这些参数将告诉它应该在Windows中作为服务注册自己的名称。这通常是基于服务安装程序和服务可执行文件的属性自动完成的,但所有这些都可以动态设置。更改名称,然后更改服务注册。服务的名称应该是(AFAIK)可由作为服务运行的可执行文件检查,它可以告诉它它负责的WCF服务。