簡體   English   中英

如何在Windows 7中使用Windows服務打開應用程序?

[英]How to open an application using a Windows Service in Windows 7?

我有一個Windows服務,該服務在我的計算機上運行,​​並且在計算機打開時進行初始化(它對其他服務有一些依賴性,但在它們之后會被初始化)。

然后,我有一個不同的應用程序,該應用程序取決於該服務的運行(該應用程序包含一個UI)。

每當服務啟動時,我都想啟動此應用程序。 因此,我在服務的“ 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消息,指出該用戶與嘗試發送消息的當前登錄用戶不同。 但是我無法將服務的起始用戶配置為當前用戶。

服務可能會在已登錄用戶的上下文中啟動應用程序,但這非常困難。 在這種情況下,由於該服務是在系統啟動后立即啟動的,因此可能仍然沒有用戶登錄!

相反,只需將應用程序添加到注冊表中的“運行”項,這樣它就可以在用戶登錄時啟動。由於它取決於服務,因此您應該獲取它以檢查服務是否已啟動,並在必要時等待。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM