【问题标题】:IIS worker process is able to start the process but it is invisibleIIS 工作进程能够启动该进程但它是不可见的
【发布时间】:2016-08-20 13:41:40
【问题描述】:

我想用视频文件运行 VLC。

我在 VS 中编写了以下代码并在 IIS Express 下运行它。在 IIS Express 下一切正常,我可以看到视频和音频。

但是当我将它发布到本地 IIS 时,我可以在任务管理器中看到 VLC.exe,并且能够听到音频但无法看到 VLC 播放器。

代码片段

        public bool LaunchVlC(string choice)
        {
          System.Diagnostics.Process VLC = new System.Diagnostics.Process();
          VLC.StartInfo.FileName = @"F:\VLC\vlc.exe";
          VLC.StartInfo.Arguments = "-vvv " + choice;
          VLC.Start();
          return true;
        }

我已经在本地系统帐户下运行 IIS Admin Service 并允许服务与桌面交互。还是看不到视频。

【问题讨论】:

  • 了解什么是 Windows 中的登录会话和会话隔离。按照设计,在会话 0 中运行的此类进程对于作为用户会话的您来说是不可见的。

标签: c# iis iis-7 session-0-isolation windows-administration


【解决方案1】:

正如'Lex Li' 在评论部分已经指出的那样,如果在会话 0 中运行的进程(您在本地 IIS 中的应用程序)请求 UI,则 UI 不会显示在用户会话中。从用户的角度来看,应用程序似乎被挂起,而实际上它正在正常运行,并耐心等待用户看不到的用户响应!

在 Windows Vista 及更高版本中,会话 0 是为服务和用户模式驱动程序创建的。会话 1 是为第一个登录的用户创建的。此用户的应用程序在会话 1 中运行。

考虑以下示例 - 如果属于应用程序的服务在会话 0 中生成 UI 元素 - 例如等待用户单击“确定”或“取消”的对话框,则应用程序现在正在等待服务,并且 UI 不会显示在用户会话中。从用户的角度来看,应用程序似乎被挂起,而实际上它正在正常运行,并耐心等待用户看不到的用户响应!

如您所想,这给用户、管理员和开发人员带来了问题。但是,有一些快速缓解因素需要考虑。

  1. 如果应用程序的服务使用 UI,则内置缓解(在 Windows Vista 及更高版本中)允许用户与特殊桌面中的会话 0 UI 进行交互。这将使特定于应用程序的 UI 可用,而不是整个 Session 0 桌面。

  2. 如果应用程序创建全局命名对象,则使用 Windows XP 兼容模式确保应用程序将继续使用 Session 0 服务。

在测试应用程序与 Windows Vista 及更高版本的兼容性时,请考虑以下测试场景:

  1. 在 Windows XP 上以终端服务器模式或快速用户切换 (FUS) 模式测试和验证应用程序。如果应用程序在这些情况下在 Windows XP 上正常工作,那么它很可能在 Windows Vista 下工作。

  2. 在应用 Window XP 兼容模式后验证应用程序是否正常运行,其中包含一些 Session 0 问题的缓解措施。

  3. 测试驱动程序(在 Windows Vista 及更高版本中)以确保其正常运行。如果这不可行,请在启用 FUS 并登录多个用户的 Windows XP 中测试驱动程序。如果驱动程序对第二个和后续登录用户正常工作,则它不太可能受到会话 0 更改的影响(在 Windows Vista 及更高版本中)。此测试未检测到的唯一问题是与会话 0(在 Windows Vista 及更高版本中)中缺少视频驱动程序有关的问题。

最后,您可以利用以下 Windows Vista 及以上功能解决方案:

  1. 使用客户端或服务器机制(例如远程过程调用 (RPC) 或命名管道)在服务和应用程序之间进行通信。

  2. 使用WTSSendMessage 函数在用户桌面上创建一个简单的消息框。这允许服务向用户发出通知并请求简单的响应。

  3. 对于更复杂的 UI,使用CreateProcessAsUser 函数在用户会话中创建一个进程。

  4. 为服务提供的任何命名对象(例如事件或映射内存)显式选择 Local\Global\ 命名空间。

这样可以快速了解会话 0 隔离如何影响 Windows Vista 及更高版本中的应用程序兼容性。


注意:复制自Application Compatibility – Session 0 Isolation;查看此链接了解更多信息。

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2012-06-09
    • 2019-04-06
    • 2013-01-16
    相关资源
    最近更新 更多