问题是我根本找不到这个选项。 我需要从iis运行winforms app,但我无法实现它。 有人给我一个提示。
我尝试将localsystem和admin身份提供给站点池,但它不起作用,只是在没有任何窗口的情况下运行。
我确实检查了“允许服务与桌面交互”,感谢answer,但仍然没有出现窗口
我甚至试过one answer,第二次one,但根本无法启动过程
答案 0 :(得分:2)
'与桌面交互'设置在Windows Vista中受到限制。互动服务很容易受到所谓的“粉碎”的影响。攻击,其中高权限进程无法正确验证由同一桌面上运行的较低权限进程发送给它的窗口消息的参数。这可能会导致安全漏洞。作为一项纵深防御措施,Microsoft将控制台会话从会话0(如在以前版本的Windows中)更改为会话1.交互式服务仍在会话0上运行,可以创建UI,或运行其他显示UI的程序,但是用户无法看到它们,也无法从其他进程接收恶意消息。
为了兼容性,Windows包括交互式服务检测服务(Ui0detect)。如果交互式服务创建了一个新窗口,则会生成一个提示,告诉用户它正在尝试显示一条消息并请求他们切换到会话0以查看它。
但是,在Windows 8上,此服务现在设置为手动启动,如果NoInteractiveServices
注册表值设置为1,则它不会启动(报告错误1,功能不正确),它是默认情况下。该值低于HKLM\SYSTEM\CurrentControlSet\Control\Windows
。 (source)
我强烈建议不要这样做。交互式服务必须在具有高权限的LocalSystem安全上下文下运行。您的代码实际上不太可能需要这些权限。相反,将UI编写为从用户的启动程序组或各种Run注册表项之一启动的低权限进程,并连接到Web应用程序,轮询信号以启动您的进程需要启动。您可以使用SignalR通知启动器它是否有时间启动应用程序。