任何方式来重写.NET Windows服务名称,而不重新编译?

我有一个Windows服务可执行文件,我知道是写在.NET中,我需要安装在不同的服务名称,以避免冲突。 安装不提供指定服务名称。 如果我只能访问二进制文件,那么在使用installutil进行安装时,是否有重写服务名称?

你必须使用InstallUtil吗? 下面是使用sc来完成你想要的命令:

sc create MyService binPath= "MyService.exe" DisplayName= "MyService" sc description MyService "My description" 

参考: http : //support.microsoft.com/kb/251192

InstallUtil不允许您configuration服务名称。 我一直这样做

 InstallUtil.exe /servicename="<service name>" "<path to service exe>" 
  1. 将项目安装程序添加到您的服务
  2. 添加方法来获取CustomService名称

     private void RetrieveServiceName() { var serviceName = Context.Parameters["servicename"]; if (!string.IsNullOrEmpty(serviceName)) { this.SomeService.ServiceName = serviceName; this.SomeService.DisplayName = serviceName; } } 
  3. 调用安装和卸载

     public override void Install(System.Collections.IDictionary stateSaver) { RetrieveServiceName(); base.Install(stateSaver); } public override void Uninstall(System.Collections.IDictionary savedState) { RetrieveServiceName(); base.Uninstall(savedState); } 
  4. installutil /servicename=”My Service [SysTest]” d:\pathToMyService\Service.exe

资源

在这里输入图像说明

这完全适合我!

我希望有人可以使用这个。

尝试使用sc.exe安装您的服务。 快速search将产生大量的文档。 使用该工具,可以轻松修改现有服务和/或添加新服务(包括名称)。

编辑:我用这个工具安装我的.NET服务。