从Windows服务启动Web浏览器
-
22-09-2019 - |
题
是否有可能推出从Windows服务的Web浏览器?我已经建立在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()
{
}
}
}
当的服务运行时,什么也没有发生。他们没有任何用户界面,但这是否意味着启动网页浏览器窗口的服务说文件是不可能的。
解决方案
这是可能仅在XP和更低。在Vista中,Windows服务一个单独的桌面上完全运行。你必须有一些在用户的桌面上运行,以实现这一目标。
写一个应用程序与隐藏窗口,在启动时启动作为一种解决方法。
其他提示
我不认为这是可能的。我知道,如果你想运行华廷(即在浏览器实例中运行的功能测试)不能从我的CI环境中运行,如果是作为服务运行,但只有当它运行作为一个应用程序。
我相信这是可以做到,但你需要做额外的工作,以应对进程隔离模式(窗口站和桌面)。看看这个页面:过程连接到一个窗口站的。由于不能修改浏览器,则可能需要写改变上下文中的垫片,然后调用浏览器。
一个解决方法是运行服务作为交互式服务,但不赞成这种方式并不会在新版本的Windows的工作。
服务被明确地从与用户交互禁止的。由于Vista的这个强制执行,请参见互动服务 :
重要强>服务不能直接 与用户与Windows交互 Vista系统。因此,该技术 在标题为使用一节中提到 交互式服务不应该 在新的代码中使用。
在解决方案是将inteactive部分分离成启动一个正常的处理中,在用户会话开始时(即,一个启动程序)。然后该过程可通过其选择(共享memeory,净管道,TCP等)的IPC的服务进行通信。需要时该服务可以直接此过程以启动程序。
不隶属于 StackOverflow