【问题标题】:Shell_NotifyIcon fails when called from a server in session 0 on Windows 7在 Windows 7 上的会话 0 中从服务器调用 Shell_NotifyIcon 失败
【发布时间】:2013-01-08 13:42:23
【问题描述】:

我们有一个使用 Visual Studio 6 编写的大型旧应用程序。当从会话 0 中的一个服务调用 Shell_NotifyIcon 在 Windows 7 上失败时,我们遇到了问题。该服务正在尝试建立一个托盘图标。

有谁知道导致此故障的原因以及如何解决该问题?

【问题讨论】:

  • 谷歌“会话 0 隔离”找出为什么这不再可能。

标签: windows windows-7 windows-services


【解决方案1】:

可能是因为添加了 Session 0 隔离功能,导致服务无法直接与用户桌面交互。要配置有权与用户交互的服务,SERVICE_INTERACTIVE_PROCESS 修饰符必须存在于服务注册表键类型参数中。 (Windows 内部 6)

【讨论】:

  • 交互式进程允许服务显示 UI,但它们的 UI 被放置在一个特殊的会话中。它们无法与用户登录会话进行通信。一旦您进行了快速用户切换,即使在 Windows XP 上,该应用程序也已损坏。
【解决方案2】:

您可能已经注意到,会话 0 中没有托盘! Shell_NotifyIcon 在那里失败并不奇怪。

托盘由 Explorer.exe 进程提供。如果您 start a copy of Explorer in Session 0 您的调用应该会神奇地成功,但请谨慎操作,因为不鼓励使用 Session 0 中的用户界面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2022-01-19
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多