有没有重新编译覆盖.NET Windows服务名称的方法?

时间:2009-11-09 23:03:26

标签: .net windows-services

我有一个Windows服务可执行文件,我知道是用.NET编写的,我需要在不同的服务名称下安装以避免冲突。无论如何,安装都不提供指定服务名称。如果我只能访问二进制文件,那么当我用installutil安装它时,是否还要覆盖服务名称?

5 个答案:

答案 0 :(得分:96)

你必须使用InstallUtil吗?以下是使用sc执行所需操作的命令:

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

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

答案 1 :(得分:27)

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

InstallUtil.exe /servicename="<service name>" "<path to service exe>"

答案 2 :(得分:23)

  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

  5. Source

答案 3 :(得分:5)

enter image description here

这对我来说非常有用!

我希望有人可以使用它。

答案 4 :(得分:2)

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

编辑:我使用此工具安装我的.NET服务。