我试图从我的VisualWebGUI(基本上是网络上的winforms)应用程序启动一个WPF.exe。一切都很好,当我运行它通过VS2010。然而,当我将网站部署到IIS时,它确实启动了.exe(我可以看到它写入日志文件),但它没有向我显示WPF应用程序的GUI。我也可以看到任务管理器中运行的进程!非常简单的东西,真的,只是传递一个提示:
Process p = new Process();
p.StartInfo.FileName = Security.ExePath
p.StartInfo.Arguments = ID
p.Start();
我试着摆弄不同的startinfo参数,但都无济于事,我错过了什么吗?
2条答案
按热度按时间wnavrhmk1#
这可能是因为应用程序是在AppPool身份下启动的(例如,ApplicationPoolIdentity)。尝试将AppPool的“高级设置”下的身份设置为已登录并应看到应用程序的用户。
plupiseo2#
您需要为您的进程指定适当的窗口工作站,以便它可以访问与当前Windows登录会话相同的UI。
查看这里:http://support.microsoft.com/kb/165194并阅读有关Windows API的信息,例如:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682429(v=vs.85).aspx
顺便说一句,从工作进程启动GUI是一个非常糟糕的主意--主要是因为你永远不能保证在任何时间点都有任何交互用户。当你使用IIS时,你的主要假设必须是没有人在看服务器屏幕。
最好让GUI应用程序(或轻量级存根)在用户登录时自动启动,然后监听来自后台进程的信号。