IIS在Active User桌面上打开文件

时间:2014-06-21 18:34:21

标签: asp.net web-services iis

情况如下:

我在电脑上收集了大量视频,它会连接到我的电视上。我想制作一个应用程序,通过我的移动设备在我的计算机上打开我的视频(是的,我知道它存在,我只是为了好玩而工作)

所以我设置了一个Web服务,以及一个使用所述webservice的应用程序。 Web服务收集文件夹/文件列表,并将它们发送到我的设备,并且可以接收文件路径并使用System.Diagnostics.Process.Start(path)

使用默认程序打开它

当我使用IISExpress时,它工作正常,但我想使用IIS。当我使用IIS时,我打开视频文件并听到它在后台播放,但它不会显示在显示器上。 VLC出现在任务管理器中,当我杀死它时,声音停止。

我假设问题是运行应用程序池的身份,但是当我尝试更改身份时,它没有任何区别。如果它有帮助,我正在运行Windows 8.有没有人想过我如何使应用程序池在我的身份下运行,或者在活动用户的桌面上打开进程,而不是在应用程序池的名称下打开它?

2 个答案:

答案 0 :(得分:1)

关于Process.Start()问题,我认为除了更改应用程序池的身份之外,还需要转到“管理工具”下的“服务”,然后选中“允许服务与桌面交互”框。 “登录”选项卡以显示World Wide Web Publishing服务。我认为这已在以下问题中得到解决:System.Diagnostics.Process.Start not work from an IIS

现在,如果我必须将这样的应用程序放在一起,我会尝试稍微不同的方法:除了你已经拥有的内容之外,我还会构建一个小型桌面应用程序,当你登录时自动启动并放在系统托盘中你的桌面。它将在命名管道或tcp或类似的东西上侦听来自asp.net应用程序的消息,并从正确的用户上下文中启动进程。这似乎是一种更稳定的方法,它还允许您将Web服务器与将播放视频的桌面分开。

答案 1 :(得分:1)

由于Windows会话隔离,这是很难实现的。 IIS及其工作进程在会话0中,而您的登录会话通常是> 0.通过本机Win32 API,会话0中的某些内容可能会在其他会话中启动可执行文件,但我认为这不值得。

请使用IIS Express,因为它直接在您的登录会话中运行,并且根本不需要越过会话边界。

相关问题