2010-11-23 2 views
0

데스크톱 응용 프로그램으로 실행되는 프로그램이 있지만 Windows 서비스로 설치할 수도 있습니다. 설치는 GUI에서 "서비스로 설치"버튼을 사용하여 수행됩니다. 이 버튼에 대한 이벤트 핸들러는 다음과 같습니다 : 내가 지금하고 싶은 무엇Vista에서 서비스 설치 및 레지스트리 항목 추가 +

ProcessStartInfo psi = new ProcessStartInfo("sc", "description " + 
    this.ServiceName + " \"" + 
     ((AssemblyDescriptionAttribute)attributes[0]).Description + "\"") 
psi.CreateNoWindow = true; 
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
psi.Verb = "runas"; 
Process.Start(psi).WaitForExit();  

는 말 아래에 몇 가지 추가 레지스트리 항목을 추가하는 것입니다 또한 높은 권한을 필요로

HKLM\SOFTWARE\MyCompany\Services 

. 그러나 "REG ADD"명령을 사용하여 위에서 설명한 것과 동일한 절차를 사용하면 UAC 대화 상자가 두 번 이상 나타납니다. 나는 그것을 원하지 않습니다.

Windows 서비스를 설치하고 HKLM에서 레지스트리 항목을 추가하는 가장 좋은 방법은 UAC 프롬프트를 한 번만 사용하는 것입니다.

답변

0

관리자 권한과 특수 매개 변수 myprogram.exe -i으로 전화를 걸어서 ServiceInstaller 클래스를 사용하는 특수 메서드로 분기하여 (sc를 호출하는 대신) 프로그램을 서비스로 설치합니다.

1

두 가지 (sc 및 reg 업데이트)를 수행하는 작은 exe 또는 배치 파일을 만듭니다. 을 sc 대신으로 시작하십시오.

+0

답변 해 주셔서 감사합니다. 이것은 명백한 해결책 인 것처럼 보이지만 코드가 공유 라이브러리에 있기 때문에 이것을 피하고자합니다. 배치 파일이나 exe와 같은 추가 구성 요소에 의존해야한다면 배포가 복잡해집니다. – Jeldrik

1

서비스를 설치하는 방법입니다.
topshelf을 시도 할 수 있습니다. 그것은 사용하기 쉽고 매우 강력합니다.

관련 문제