我有一个带有Windows服务的exe文件。要安装它,我使用命令:
installutil myService.exe / ShowCallStack
然后,我可以在“服务”窗口中看到“service1”。
我的问题是,是否可以安装2个相同服务的实例(使用相同的exe)但名称不同。我想在不更改源代码的情况下这样做。
由于
答案 0 :(得分:2)
您的服务是否有ProjectInstaller
课程?如果您向服务添加ProjectInstaller
,则可以编辑ProjectInstaller ServiceInstaller的DisplayName
属性。这会将名称从“Service1”更改为您想要的名称。有关ProjectInstallers的演练,请访问MSDN here。
答案 1 :(得分:0)
我过去曾使用过类似下面的脚本。编辑服务名称,将其另存为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" ,"")
答案 2 :(得分:0)
在服务安装期间可以使用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
欢呼声