2

ユーザーが Windows XP でアクセス カードをスキャンすると、確認メッセージ ボックスを表示するために使用される Windows サービスがありましたが、Windows 7 に移行すると、そのポップアップ機能が機能しなくなりました。この機能をできるだけ早く修正する方法について、誰かが私を案内したり、アイデアを教えてくれたりできますか?

4

2 に答える 2

3

お気づきのとおり、サービスは非対話型セッションであるセッション 0 で実行されるようになりました。XP の場合とは異なり、インタラクティブなユーザーのデスクトップと対話することはできません。

いくつかのオプションがあります。

  1. WTSSendMessage対話型デスクトップにメッセージを表示するために呼び出します。これはかなり基本的なものですが、ニーズを満たすことができます。本当にできるだけ早くという意味であれば、これが最も迅速な解決策になります。
  2. サービスに加えて、標準のデスクトップ アプリケーションを実行します。WCF などの何らかの形式の IPC を使用して、サービスがデスクトップ アプリと通信するようにします。サービスが情報を表示する必要がある場合は、IPC チャネルを介してデスクトップ アプリにメッセージを送信し、デスクトップ アプリにそれらを表示させます。
于 2013-08-30T08:52:31.923 に答える
1

Windows XP、Windows Server 2003、およびそれ以前のバージョンの Windows オペレーティング システムでは、サービスとアプリケーションは、コンソールにログオンした最初のユーザーが開始したセッションと同じセッションで実行されます。このセッションはセッション 0 と呼ばれ、次の図に示すように、Windows Vista より前は、セッション 0 にはサービスと標準ユーザー アプリケーションの両方が含まれていました。セッション 0 でサービスとユーザー アプリケーションを一緒に実行すると、セキュリティ リスクが生じます。これは、サービスが昇格された特権で実行され、ユーザー アプリケーションがユーザー特権 (そのほとんどは管理者ではない) で実行されるためです。サービスを「ハイジャック」して、自分の権限レベルを上げます。

Windows Vista 以降では、サービスのみがセッション 0 でホストされます。ユーザー アプリケーションはサービスから分離され、ユーザーがシステムにログオンしたときに作成される後続のセッションで実行されます。最初にログオンしたユーザーの場合はセッション 1、2 番目のユーザーの場合はセッション 2 などです。次の図に示すようにオンにします。

詳細: http://blogs.windows.com/windows/archive/b/developers/archive/2009/10/01/session-0-isolation.aspx

詳細については、セッション 0 分離 - http://msdn.microsoft.com/en-us/Windows7TrainingCourse_Win7Session0Isolationを参照してください。

于 2013-08-30T08:54:04.277 に答える