2013-01-10 180 views
1

如何在登錄到Windows之前啓動Windows窗體應用程序?在登錄到Windows之前是否可以啓動Windows窗體應用程序?如果不是,在登錄之前是否有機會啓動Windows服務,並在登錄之前從已啓動的服務調用Windows窗體應用程序?在登錄到Windows之前啓動Windows窗體應用程序

+1

如果用戶沒有登錄,_form_會有什麼好處? –

+0

我有一個龐大的代碼,不想將項目移植到Windows服務應用程序。 – sanchop22

+0

如果您希望它在計算機環境下運行,並且不需要用戶的輸入或反饋,我強烈建議將其重構爲服務運行。您可以使用['Process'](http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx)並從服務啓動應用程序,但表單應用程序的全部本質是給用戶可以互動;如果它作爲服務運行,這個組件將會丟失。 –

回答

2

根據要運行標準桌面應用程序的問題的意見,該應用程序使用WinForms構建而不是服務,該應用程序在用戶登錄之前啓動。

這是不可能的。你需要的是一項服務。

2

非常符合,但應該給你的要點。您還需要爲其創建ServiceProcessInstaller(並撥打電話installutil)。

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 
    } 
    } 
} 

這基本上就像從Windows服務託管WCF服務,所以如果你需要更多的細節查找「WCF Windows服務的主機」(或類似),看看how that's done。同樣的前提下,您只需要使用Process

相關問題