如何让iis8.5服务与桌面交互

How to allow iis8.5 service to interact with desktop

问题是我根本找不到这个选项。 我需要 运行 来自 iis 的 winforms 应用程序,但我无法实现它。 Сan 有人给我提示。

我试图为站点池提供本地系统和管理员身份,但它不起作用,只处理 运行ning 而没有任何 window。


更新

感谢answer,我检查了"allow service to interact with desktop",但仍然window没有出现


更新2

我什至试过这个one answer,and second one但根本无法启动进程

从 Windows Vista 开始,'Interact With Desktop' 设置受到限制。交互式服务容易受到所谓的 'shatter' 攻击,其中高权限进程无法正确验证低权限进程 [=35= 发送给它的 window 消息的参数] 在同一个桌面上。这可能会导致安全漏洞。作为纵深防御措施,Microsoft 将控制台会话从 Windows 的先前版本中的会话 0 更改为会话 1。交互式服务仍然 运行 在会话 0 上并且可以创建 UI,或 运行 其他程序显示 UI,但用户看不到它们,也无法接收来自其他进程的恶意消息。

为了兼容性,Windows 包括交互式服务检测服务 (Ui0detect)。如果交互式服务创建了一个新的 window,这会生成一个提示,告诉用户它正在尝试显示一条消息并请求他们切换到会话 0 以查看它。

但是,在Windows 8 上,此服务现在设置为手动启动,如果NoInteractiveServices 注册表值设置为1,它将无法启动(报告错误1,功能不正确) ,默认情况下。该值低于 HKLM\SYSTEM\CurrentControlSet\Control\Windows。 (source)

我强烈建议不要这样做。交互式服务必须 运行 在具有高特权的 LocalSystem 安全上下文中。您的代码不太可能真的需要这些特权。相反,将 UI 编写为从用户的启动程序组或各种 运行 注册表项之一启动的低特权进程,并连接到 Web 应用程序,轮询启动信号您需要启动的过程。您可以使用 SignalR 通知启动器该启动应用程序了。

参考:Session 0 Isolation for Services and Drivers