使用自定义名称安装Windows服务

我有一个Windows服务的exe文件。 要安装它,我使用命令:

installutil myService.exe / ShowCallStack

然后,我可以看到服务窗口中列出的“service1”。

我的问题是,如果有可能安装2个相同的服务(使用相同的exe),但具有不同的名称的实例。 我想在不改变源代码的情况下做到这一点。

谢谢

过去我使用过下面的脚本。 编辑服务名称,将其保存为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" ,"") 

你的服务有一个ProjectInstaller类吗? 如果将ProjectInstaller添加到服务中,则可以编辑ProjectInstaller的ServiceInstaller的DisplayName属性。 这会将名称从“Service1”更改为您想要的名称。 ProjectInstallers上的演练可以在MSDN上找到 。

在服务安装期间可以使用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

干杯