如何从Windows服务启动浏览器

How can I start a browser from a windows service

我需要创建一个Windows服务,当启动时打开一个特定的URL。我所做的是通过添加以下行来重写onStart()方法:

protected override void onstart(string[]参数)

1
2
3
4
5
    {
        eventLog1.WriteEntry("Browser must start" + DateTime.Now);
        string targetURL ="http://www.mysite.com";
        System.Diagnostics.Process.Start(targetURL);
    }

但是这东西不起作用。(:问题是它确实写了日志。这意味着启动时有人有任何想法吗?????


简单的答案是,如果您使用的是Vista或更高版本,则不能。这是由于会话0隔离造成的。从链接到该页的文档中引用:

For more complex interactions,
developers should move their UI code
into an agent that runs in the user’s
session and handles all UI
requirements. The agent communicates
with the service through RPC or named
pipes.


服务通常在没有用户登录时启动(当它处于自动启动模式时)。

一般来说,服务不会与用户桌面交互并在单独的会话中工作。如果需要为每个或部分登录用户执行某些操作,则需要编写一个单独的代理应用程序,该应用程序将在用户登录时自动启动,并与您的服务进行通信。然后,代理可以启动浏览器或执行您需要的其他操作。


Windows服务没有GUI。您可以创建一个与服务交互的控制器,并让它启动一个Web浏览器。

此链接不会直接回答您的问题,但在答案中包含足够的链接,使您走上正确的道路:如何在上作为服务运行Windows GUI应用程序?