我们有一个使用Visual Studio 6编写的大型旧应用程序。当在会话0中从我们的某个服务调用时,我们遇到Shell_NotifyIcon在Windows 7上失败的问题。该服务试图建立一个托盘图标。
有谁知道造成这种失败的原因以及如何解决这个问题?
答案 0 :(得分:1)
可能是因为添加了Session 0 Isolation功能,其结果是服务无法直接与用户桌面交互。要配置具有与用户交互的权限的服务,必须在SERVICE_INTERACTIVE_PROCESS修饰符中显示服务注册表项类型参数。 (Windows Internals 6)
答案 1 :(得分:0)
正如您可能注意到的那样,会话0中没有托盘! Shell_NotifyIcon在那里失败并不奇怪。
托盘由Explorer.exe进程提供。如果start a copy of Explorer in Session 0您的呼叫应该神奇地成功,但请谨慎行事,因为不建议会话0中的用户界面。