2010-02-24 1 views
1

Windows 서비스에서 웹 브라우저를 시작할 수 있습니까? C#으로 기본 서비스를 만들고 "LocalSystem"보안 프로파일 아래에 설치했습니다. 다음과 같이Windows 서비스에서 웹 브라우저 시작

서비스에 대한 코드는 같습니다

namespace Bootloader 
{ 
    public partial class Service1 : ServiceBase 
    { 
     public Service1() 
     { 
      InitializeComponent(); 
     } 

     protected override void OnStart(string[] args) 
     { 
      string target = "http://www.microsoft.com"; 
      System.Diagnostics.Process.Start(target); 
     } 

     protected override void OnStop() 
     { 
     } 
    } 
} 

서비스 실행은, 아무 반응이 없을 때. 윈도우 서비스에 관한 문서는 UI가 없다고 말하고 있지만, 웹 브라우저를 실행하는 것은 불가능하다.

+2

나는 당신이 성취하려는 것을 궁금해합니다. 현재 로그온 한 사용자와 상호 작용하려면 Windows 서비스가 필요합니까? 그렇다면 왜 Windows 서비스입니까? 로그온 한 사용자가 없으면 어떻게됩니까? 백그라운드 서비스가 사용자와 상호 작용해야하는 이유는 무엇입니까? 등 광고 inf. – jrista

+0

무슨 일이 일어날 것으로 예상됩니까? 실행중인 Windows의 버전에 따라 브라우저 창이 나타나지 않을 수도 있고 그렇지 않을 수도 있습니다. UI를 제공하는 서비스를 제공하는 것은 ** 나쁜 일입니다. ** ... Google "산산이 공격" – Rob

+0

나는 인터넷 브라우저와 다른 UI를 팝업하는 포트에서 수신 대기하는 백그라운드에서 실행되는 프로그램에서 작업하고 있습니다. 특정 명령을받습니다. 숨겨진 창을 가진 응용 프로그램처럼 들리는 것 같습니다. – mon4goos

답변

5

XP 이하에서만 가능합니다. Vista에서는 Windows 서비스가 별도의 데스크톱에서 완벽하게 실행됩니다. 이 작업을 수행하려면 사용자의 데스크톱에서 뭔가를 실행해야합니다.

해결 방법으로 시작시 시작할 숨겨진 창으로 앱을 작성하십시오.

0

나는 이것이 가능하지 않다고 생각합니다. Watin (브라우저 인스턴스에서 실행되는 기능 테스트)을 CI 환경에서 실행할 수 없다는 것을 알고 있습니다.이 서비스가 응용 프로그램으로 실행되는 경우에만 서비스로 실행됩니다.

0

나는 그것을 할 수 있다고 믿지만 프로세스 격리 모델 (윈도우 스테이션과 데스크탑)을 다루려면 추가 작업이 필요할 것이다. 이 페이지를보십시오 : Process Connection to a Window Station. 브라우저를 수정할 수 없으므로 컨텍스트를 변경 한 다음 브라우저를 호출하는 shim을 작성해야 할 수 있습니다.

서비스를 대화 형 서비스로 실행하는 것이지만이 방법은 더 이상 사용되지 않으며 최신 버전의 Windows에서는 작동하지 않습니다.

0

서비스는 사용자와의 상호 작용이 명시 적으로 금지되어 있습니다. 비스타이 시행되기 때문에, Interactive Services를 참조하십시오

중요 서비스를 직접 윈도우 비스타로 사용자와 상호 작용할 수 없습니다. 따라서 대화 형 서비스 사용이라는 절에서 언급 한 기술 은 새 코드에서 이 아니어야합니다.

해결 방법은 사용자 세션이 시작될 때 (즉, 시작 프로그램) 실행되는 일반적인 프로세스로 inteactive 부분을 분리하는 것입니다. 이 프로세스는 IPC (memeory, net pipe, TCP 등)를 통해 서비스와 통신 할 수 있습니다. 이 서비스는 필요할 때 프로그램을 시작하도록이 프로세스를 지시 할 수 있습니다.