簡體   English   中英

從Windows服務啟動Web瀏覽器

[英]Launching Web Browser from Windows Service

是否可以從Windows服務啟動Web瀏覽器? 我已經在C#中創建了一項基本服務,並將其安裝在“ LocalSystem”安全配置文件下。

該服務的代碼如下所示:

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()
        {
        }
    }
}

服務運行時,什么也沒有發生。 Windows服務上的文檔說它們沒有任何UI,但這並不意味着無法啟動Web瀏覽器。

僅在XP及更低版本中才有可能。 在Vista中,Windows服務完全在單獨的桌面上運行。 您必須在用戶的桌面上運行某些程序才能完成此操作。

解決方法是在啟動時使用隱藏窗口編寫應用程序。

我認為這是不可能的。 我知道,如果要運行Watin(在瀏覽器實例中運行的功能測試),則不能從我的CI環境中運行,前提是該服務作為服務運行,而只能作為應用程序運行。

我相信可以做到,但是您需要做一些額外的工作才能處理流程隔離模型(窗口站和桌面)。 看一下此頁面: 到Window Station的過程連接 由於您無法修改瀏覽器,因此可能需要編寫一個填充程序以更改上下文,然后調用瀏覽器。

一種解決方法是將您的服務作為交互式服務運行,但這已被棄用,並且在新版本的Windows中將無法使用。

明確禁止服務與用戶進行交互。 由於Vista是強制執行的,請參見Interactive Services

從Windows Vista開始, 重要服務無法直接與用戶交互。 因此,標題為“使用交互式服務”的部分中提到的技術不應在新代碼中使用。

解決方案是將可交互部分分為一個正常進程,該正常進程在用戶會話啟動時啟動(即啟動程序)。 然后,此過程可以通過其選擇的IPC(共享內存,網絡管道,TCP等)與服務進行通信。 該服務可以在需要時指導此過程啟動程序。

暫無
暫無

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

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