2011-02-02 51 views
0

我需要创建一个Windows服务,当启动时打开一个特定的URL。 我所做的是通过添加以下行来覆盖在onStart()方法:如何从Windows服务启动浏览器

保护覆盖无效的OnStart(字串[] args)

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

但是这件事不`吨的工作。 :(( 事情是,它确实写入日志。意思是onStart任何人都有任何想法????

回答

2

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

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

2

简单的答案是,如果你使用Vista或更高版本,你不能。这是由于session 0 isolation。要在该网页链接的文档引用:

对于更复杂的相互作用, 开发者应该将他们的UI代码 成在用户的 会话中运行并处理所有UI 要求代理。该代理通过RPC或命名为 管道将 与服务进行通信。

相关问题