Visual Studio 6 を使用して作成された大規模で古いアプリケーションがあります。セッション 0 でサービスの 1 つから呼び出されたときに、Windows 7 で Shell_NotifyIcon が失敗するという問題があります。サービスはトレイ アイコンを配置しようとしています。
この失敗の原因と問題を回避する方法を知っている人はいますか?
Visual Studio 6 を使用して作成された大規模で古いアプリケーションがあります。セッション 0 でサービスの 1 つから呼び出されたときに、Windows 7 で Shell_NotifyIcon が失敗するという問題があります。サービスはトレイ アイコンを配置しようとしています。
この失敗の原因と問題を回避する方法を知っている人はいますか?
おそらく、Session 0 Isolation 機能が追加されたため、サービスがユーザーのデスクトップと直接対話できなくなったためです。ユーザーと対話する権限を持つサービスを構成するには、SERVICE_INTERACTIVE_PROCESS修飾子をサービス レジストリ キーの Type パラメーターに指定する必要があります。(Windows 内部 6)
お気づきかもしれませんが、セッション 0 にはトレイがありません! そこで Shell_NotifyIcon が失敗するのは当然のことです。
トレイは、Explorer.exe プロセスによって提供されます。セッション 0 で Explorer のコピーを開始すると、呼び出しは魔法のように成功するはずですが、セッション 0 のユーザー インターフェイスは推奨されないため、注意して進めてください。