c# - Process.Start() 工作但没有弹出窗口
问题描述
我有一个 Web API 项目,它有一个调用,允许用户基本上在服务器上启动一个单独的应用程序。
基本上,我的 Web API 是从 MVC 项目远程调用此应用程序的网关。
问题:
我面临的问题是 Process.Start() 方法运行良好(正如我可以看到在服务器的任务管理器上启动的进程)但没有弹出窗口?我可以直接运行该应用程序并看到它在自己的窗口中启动。
网页 API 代码:
public void ReconnectEPLAN()
{
if (CheckEplanConnection() == false)
{
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = @"C:\Program Files\EPLAN\Pro Panel\2.8.3\Bin\W3u.exe"; //works but no ui poopup
process.StartInfo.CreateNoWindow = false;
process.Start();
}
}
我该怎么做才能强制启动进程的应用程序窗口也出现?
解决方案
在您的服务器上,IIS 作为服务运行(与在用户空间中运行的 IIS Express 不同)。从 Windows Vista 开始,服务不能再直接与用户的桌面交互。
看:
- 如何从 Windows 服务运行控制台应用程序?
- https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/f8f91e8f-5954-43a7-8bc4-80ed2ff1e3b1/quotallow-service-to-interact-with-desktopquot-does-not-work-on- vista?forum=windowssdk
- https://www.codeproject.com/Questions/1239551/Why-does-process-start-goes-to-background-when-sta
服务根本无法直接与用户交互:这是因为服务可以在根本没有用户登录的机器上运行,因此无法与它们交互。
推荐阅读
- java - 如何创建 Rest API 并添加时间延迟来处理?
- javascript - 在现有静态网站之上使用 Vue 添加过滤功能
- excel - 用户窗体不会打开
- php - 带有php的谷歌日历v3 api不发送与会者
- c++ - 聆听 GLFW 中的键盘输入并相应地修改对象?
- python - 为什么使用 networkx 时 dask.delayed 比串行代码花费更长的时间?
- java - 如何解决 Apache 客户端 5.0“连接已关闭”HTTPS POST 错误
- android - MotionLayout/Carousel 当前状态
- css - focus-within 适用于 Android 浏览器,但不适用于 iOS
- javascript - 为什么无法在 firebase.app() 中读取属性“app”?