2012-04-30 85 views
1

我有一個Windows服務在我的計算機上運行,​​並在計算機啓動時進行初始化(它對其他服務有一些依賴關係,但在其後初始化)。如何在Windows 7中使用Windows Service打開應用程序?

然後,我有一個不同的應用程序,這取決於該服務運行(該應用程序包含一個用戶界面)。

我想在服務啓動時啓動此應用程序。因此,我用下面的代碼中的服務「的OnStart()」事件:

  var process = new Process(); 
      process.StartInfo = new ProcessStartInfo 
       { 
        CreateNoWindow = false, 
        WindowStyle = ProcessWindowStyle.Maximized 
       }; 

      try 
      { 
       process = Process.Start(applicationPath); 
       return (true); 
      } 
      catch (Exception e) 
      { 
       Logger.Log("ApplicationHelper::OpenApplication Error: " + e.Message); 
       Logger.Log(applicationPath); 

       return (false); 
      } 

什麼情況是,應用程序的過程中開始運行,但不顯示的UI。我只能看到該進程正在任務管理器中運行。我如何從Windows服務啓動應用程序?

我已經啓用了與桌面交互的選項,但它沒有幫助。

我使用.Net 4和Windows 7.

謝謝!

實際上,當我嘗試打開該服務時,會彈出一條Windows消息,指出它是與當前記錄的嘗試發送消息的用戶不同的用戶。但我無法將服務的起始用戶配置爲當前服務。

回答

0

服務可以在登錄用戶的上下文中啓動應用程序,但這非常困難。在這種情況下,由於服務在系統啓動後立即啓動,因此可能還沒有用戶登錄!

相反,只需將該應用程序添加到註冊表中的運行鍵,以便它在用戶登錄時啓動。由於它依賴於服務,因此應該檢查它是否已啓動如有必要等待。

相關問題