有没有办法使用IIS触发桌面应用程序为当前用户打开GUI?

时间:2015-11-20 15:10:30

标签: c# .net internet-explorer iis asp.net-web-api

TL; DR :需要允许IIS(7-7.5)Web服务使用当前用户打开Internet Explorer并使其可见。 (允许与桌面交互)

这是问题和我尝试过的事情:

我在整个学校的一所大学里都有监听工作。这些监视器只是在服务器模式下打开Web浏览器的Windows服务器。

与之交互的服务器将不时失败,并且Web浏览器(每2分钟刷新一次)可能会陷入不良状态。

当页面没有正确刷新时,我有办法监控(使用第二台服务器,nagios),简单的解决方案是刷新浏览器或(更简单)打开并再次关闭它。

我需要远程服务器(nagios)来触发Web浏览器通过Web Api调用进行刷新。我在服务器上设置了IIS写了一个简单的Web服务,就是这样的:

closeAllProcessesWithNameIE();
Process.Start("Iexplorer", -k"); 

IE的所有实例都将正常关闭,并且IE的进程将再次启动(可以在任务管理器中查看)。 HOWEVER IE的GUI不会显示。

我尝试过的事情(在所有排列中):

  1. 使应用程序池作为当前登录用户运行。
  2. 触发辅助程序运行IE,包括自定义EXE,bat和Powershell脚本。
  3. 为World Wide Web Publishing服务启用“允许服务与桌面交互”。 (记住IIS 7没有IISAD功能的IISADMINSERVICE)
  4. USER32.dll各种功能使窗口显示在顶部。
  5. 我正在考虑编写一个使用任务调度程序检查的信号量/锁定文件,但这似乎比最初的解决方案更糟糕。

    我不担心的事情:

    1. 远程代码执行。
    2. 黑客登录用户帐户。 (这些帐户没有任何权限,甚至不是本地管理员)
    3. 有人不断重启网络浏览器(我们通过HTTPS使用基本身份验证令牌)

1 个答案:

答案 0 :(得分:0)

使用PsExec,您可以使用-i开关指定希望将要启动的应用程序附加到当前的交互式会话中。

PsExec download site