从 Web 应用程序在服务器上启动 UI

Start UI on server from web application

我正在尝试使用 Web 应用程序 UI(chrome、firefox、IE 等浏览器 运行ning。

当我使用以下代码时(在我的本地机器和服务器上)

Process.Start(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe");
Process.Start(@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe");
Process.Start(@"C:\Program Files\Internet Explorer\iexplore.exe");

在控制台应用程序中,这没有问题。这三个都可以正常启动。

class Program
{
    static void Main(string[] args)
    {
         Process.Start(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe");
         ...
    }
}

当我从控制器方法尝试这个时,这不起作用。

public class MyController : Controller
{
    public ActionResult QuickStart()
    {
         Process.Start(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe");
         ...
    }
}

如果我启动我自己的自定义可执行文件,它会 运行(我的测试可执行文件将文件写入磁盘)但它不会显示它应该显示的控制台。 )

根据我的发现,这是因为系统没有关于此 ui 必须显示给哪个用户的任何上下文?所以我尝试模拟每个可能的用户(不起作用,因为模拟与将当前会话作为登录用户不同?)并且我已经尝试为每个可能的 WindowsIdentity 启动该过程,但仍然没有发生。

有谁知道我可以做些什么来完成这项工作?

只要您的应用使用其他凭据,它就会创建一个新会话。要解决这个问题,您需要制作一个小型系统托盘类型的应用程序,以便您可以以某个帐户登录,然后 运行 这个应用程序会侦听来自您的服务的命令,然后在该会话中弹出您需要的任何内容到,并且用户可以看到中间应用程序 运行s as.