从Windows服务启动Web浏览器(Launching Web Browser from Wind

2019-09-29 15:07发布

是否有可能从一个窗口服务推出网页浏览器? 我已经创建了C#中的基本服务和“本地系统”的安全配置文件下安装它。

该服务的代码如下:

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服务的文档说,他们没有任何的用户界面,但这是否意味着启动网页浏览器是不可能的。

Answer 1:

这是可能只有在XP和较低。 在Vista中,Windows服务一个单独的桌面上完全运行。 你必须有一些在用户的桌面上运行,以实现这一目标。

写与启动时启动的解决方法隐藏窗口的应用程序。



Answer 2:

我不认为这是可能的。 我知道,如果你想运行华廷(即在浏览器实例中运行的功能测试)不能从我的CI环境中运行,如果是作为服务运行,但只有当它运行作为一个应用程序。



Answer 3:

我相信这是可以做到,但你需要做额外的工作,以应对进程隔离模式(窗口站和桌面)。 看看这个页面: 过程连接到一个窗口站 。 既然你不能修改浏览器,你可能需要编写一个变化的背景下,然后调用浏览器垫片。

一种解决方法是运行服务作为交互式服务,但这已被废弃,不会在新版本的Windows工作。



Answer 4:

服务是明确地与用户交互禁止。 由于Vista的这个强制执行,请参阅互动服务 :

重要服务不能直接与用户的Windows Vista中的互动。 因此,在标题使用交互式服务的部分中提到的技术,不应该在新的代码中使用。

该解决方案是将inteactive部分分成,当用户会话开始(即一个启动程序),它推出了一个正常的过程。 这个过程可以与服务通过其选择(共享memeory,净管道,TCP等)的IPC然后进行通信。 该服务可以直接这个过程需要时启动程序。



文章来源: Launching Web Browser from Windows Service