是否可以从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浏览器。
答案 0 :(得分:5)
只有XP和更低版本才有可能。在Vista中,Windows服务完全在单独的桌面上运行。您必须在用户的桌面上运行一些东西才能完成此任务。
使用隐藏窗口编写应用程序,该窗口在启动时作为解决方法启动。
答案 1 :(得分:0)
我不认为这是可能的。我知道如果你想运行Watin(在浏览器实例中运行的功能测试)无法从我的CI环境运行,如果它作为服务运行,但仅当它作为应用程序运行时。
答案 2 :(得分:0)
我相信它可以做到,但你需要做额外的工作才能处理过程隔离模型(窗口站和桌面)。请看这个页面:Process Connection to a Window Station。由于您无法修改浏览器,因此您可能需要编写一个更改上下文的填充程序,然后调用浏览器。
解决方法是将您的服务作为交互式服务运行,但这已被弃用,并且在较新版本的Windows中无法使用。
答案 3 :(得分:0)
明确禁止服务与用户交互。自Vista实施以来,请参阅Interactive Services:
重要服务不能直接 从Windows开始与用户交互 Vista系统。因此,技术 在标题为使用的部分中提到 互动服务不应该 用于新代码。
解决方案是将活动部分分离为在用户会话启动时启动的正常过程(即启动程序)。然后,此过程可以通过其选择的IPC(共享内存,网络管道,TCP等)与服务进行通信。该服务可以指导此过程在需要时启动程序。