2013-01-10 1 views
1

Windows에 로그온하기 전에 Windows 양식 응용 프로그램을 시작하려면 어떻게합니까? Windows에 로그온하기 전에 Windows 양식 응용 프로그램을 시작할 수 있습니까? 그렇지 않으면 로그온하기 전에 Windows 서비스를 시작하고 로그온하기 전에 이미 시작된 서비스에서 Windows Forms 응용 프로그램을 호출 할 수 있습니까?Windows에 로그온하기 전에 Windows 양식 응용 프로그램 시작

+1

사용자가 로그온하지 않은 경우 _form_은 어떤 이점이 있습니까? –

+0

나는 거대한 코드를 가지고 있었고 프로젝트를 Windows 서비스 응용 프로그램으로 포팅하고 싶지 않습니다. – sanchop22

+0

컴퓨터 컨텍스트에서 실행하고 사용자의 의견이나 피드백이 필요하지 않은 경우 서비스로 실행되도록 리팩터링하는 것이 좋습니다. 당신은 ['Process'] (http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx)를 사용하여 서비스에서 응용 프로그램을 시작할 수 있지만, 양식 응용 프로그램의 전체 본질은 다음과 같습니다. 사용자가 상호 작용할 수 있습니다; 이 구성 요소가 서비스로 실행되는 경우 누락됩니다. –

답변

2

사용자가 로그온하기 전에 시작하는 서비스가 아닌 WinForms로 작성된 표준 데스크톱 응용 프로그램을 실행하고 싶은 질문에 따르면.

이것은 불가능합니다. 필요한 것은 서비스입니다.

2

매우 기본이지만, 당신에게 요점을 제공해야합니다. 또한 installutil에 전화를 걸어와 함께 ServiceProcessInstaller을 만들어야합니다.

public class WinFormHostService : System.ServiceProcess.ServiceBase 
{ 
    [STAThread] 
    public static void Main() 
    { 
    System.ServiceProcess.ServiceBase.Run(new WinFormHostService()); 
    } 

    protected Process winFormsProcess; 

    public WinFormHostService() 
    { 
    this.ServiceName = "WinForm Host Service"; 
    this.AutoLog = true; 
    } 

    protected override void OnStart(String[] args) 
    { 
    this.winFormsProcess = new Process(); 
    try 
    { 
     this.winFormsProcess.UseShellExecute = false; 
     this.winFormsProcess.FileName = @"C:\Program Files\MyApp\MyApp.exe"; 
     this.winFormsProcess.CreateNoWindow = true; 
     this.winFormsProcess.Start(); 
    } 
    catch (Exception ex) 
    { 
     // unable to start process 
    } 
    } 
} 

이것은 기본적으로 당신은 자세한 내용은 "WCF Windows 서비스의 호스트를"찾아 볼 필요가있다, 그래서 만약 Windows 서비스에서 WCF 서비스를 호스팅 (또는 모두) 및 how that's done를 볼 수있다. 동일한 전제, 당신은 단지 Process을 대신 사용하고 있습니다.

관련 문제