我正在尝试从我的VisualWebGUI(基本上是Web上的winforms)应用程序启动WPF .exe。当我通过VS2010运行时,一切正常。但是,当我将站点部署到IIS时,它确实启动了.exe(我可以看到它写入日志文件),但它没有显示WPF应用程序的GUI。我也可以在任务管理器中看到进程!非常简单的事情,只是通过一个争论:
Process p = new Process();
p.StartInfo.FileName = Security.ExePath
p.StartInfo.Arguments = ID
p.Start();
我试过摆弄不同的startinfo参数,但无济于事,我错过了什么?
答案 0 :(得分:0)
这可能是因为应用程序是在AppPool标识下启动的(例如ApplicationPoolIdentity)。尝试将AppPool的“高级设置”下的标识设置为登录的用户,并且应该看到该应用程序。
答案 1 :(得分:0)
您需要为流程指定正确的窗口工作站,以便它可以访问与当前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应用程序(或轻量级存根),然后从后台进程中侦听信号,你会更好。