Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Process.Start()问题-未显示GUI_C#_Wpf_Process.start_Visual Web Gui - Fatal编程技术网

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

C# Process.Start()问题-未显示GUI,c#,wpf,process.start,visual-web-gui,C#,Wpf,Process.start,Visual Web Gui,我正在尝试从我的VisualWebGUI(基本上是web上的winforms)应用程序启动WPF.exe。当我运行VS2010时,一切都正常。但是,当我将站点部署到IIS时,它确实会启动.exe(我可以看到它写入日志文件),但它不会显示WPF应用程序的GUI。我也可以看到进程在任务管理器中运行!非常简单的东西真的,只是通过一个论点: Process p = new Process(); p.StartInfo.FileName = Security.ExePath p.StartInfo.Arg

我正在尝试从我的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参数,但没有效果,我是否遗漏了什么?

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

您需要为您的进程指定适当的窗口站,以便它能够访问与当前Windows登录会话相同的UI

看这里: 请继续阅读Windows API,例如:

作为旁注,从辅助进程启动GUI是一个非常糟糕的主意——主要是因为您永远不能保证在任何时间点都有交互用户。使用IIS时,您的主要假设必须是没有人查看服务器屏幕


用户登录时,最好让GUI应用程序(或轻量级存根)自动启动,然后监听后台进程的信号。

当它在IIS中运行时,它不会显示在屏幕上。您的应用程序应用程序池将作为其他用户运行,因此当您启动新进程时,它将作为该用户启动当您在IIS中运行时,您将作为“服务”运行。服务没有桌面。通过网页在服务器(IIS)上运行.exe不是一个好主意。请进一步说明:您的应用程序在开发过程中出现,因为IIS正在您的计算机上运行。当您将项目部署到服务器时,无论服务器配置如何,您的任何用户都不会看到您启动的WPF应用程序。您想做什么?从web应用程序启动进程是不好的,尝试显示GUI在可伸缩性方面更差。此外,除非您以具有登录权限的帐户运行应用程序池(这是非常糟糕的),否则任何人都无法查看每个人的评论。长话短说,我们试图在VisualWebGUI应用程序中捕获一组信息,然后以WPF形式向用户显示其中的一些数据。WPF拥有一些对该项目有用的控件。假设用户曾经登录到web服务器不是最安全的假设,这是OP的问题。顺便说一句,使用具有提升凭据的帐户(例如本地登录)进行应用程序池是一种等待更坏情况发生的入侵,他必须授予应用程序池帐户的本地登录权限。那就像是要求打扰