Process.Start() 问题 - 未显示 GUI

问题描述 投票:0回答:3

我正在尝试从我的 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 参数,但无济于事,我是否遗漏了一些东西?

c# wpf process.start visual-web-gui
3个回答
0
投票

这可能是因为应用程序是在 AppPool 标识下启动的(例如 ApplicationPoolIdentity)。尝试将 AppPool 的“高级设置”下的身份设置为已登录的用户,并且应该可以看到该应用程序。


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 应用程序(或轻量级存根)在用户登录时自动启动,然后监听来自后台进程的信号。


0
投票

大多数答案仅限于说这是一种非常糟糕的做法...他们假设并假设...但他们都没有给出结论性的解决方案,他们继续假设它可能是这样或那样...给出一些解决方案,让每个人承担自己的责任...到最后,他们真的不知道为什么需要这样...

© www.soinside.com 2019 - 2024. All rights reserved.