code

다시 컴파일하지 않고 .NET Windows 서비스 이름을 재정의하는 방법이 있습니까?

codestyles 2020. 11. 7. 09:58
반응형

다시 컴파일하지 않고 .NET Windows 서비스 이름을 재정의하는 방법이 있습니까?


충돌을 피하기 위해 다른 서비스 이름으로 설치해야하는 .NET으로 작성된 Windows 서비스 실행 파일이 있습니다. 설치는 서비스 이름을 지정하는 방법을 제공하지 않습니다. 바이너리에만 액세스 할 수있는 경우 installutil로 설치할 때 서비스 이름을 무시할 수 있습니까?


InstallUtil을 사용해야합니까? 다음은 sc를 사용하여 원하는 작업을 수행하는 명령입니다.

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

참조 : http://support.microsoft.com/kb/251192


InstallUtil에서 서비스 이름을 구성 할 수 없다는 것은 사실이 아닙니다. 난 항상 이렇게 해

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를 사용하여 서비스를 설치해보십시오. 빠른 검색은 많은 문서를 생성합니다. 이 도구를 사용하면 기존 서비스를 쉽게 수정하거나 이름을 포함한 새 서비스를 추가 할 수 있습니다.

편집 :이 도구를 사용하여 .NET 서비스를 설치합니다.

참고 URL : https://stackoverflow.com/questions/1704554/any-way-to-override-net-windows-service-name-without-recompiling

반응형