6

カスタム資格情報プロバイダーを開発しており、シナリオがセッションのログインまたはロック解除であるかを実行時に知る必要があります。このために、ICredentialProvider インターフェイスのSetUsageScenarioによって返されるCREDENTIAL_PROVIDER_USAGE_SCENARIOを確認します。

Windows 10 では、ログイン時またはセッションがロックされている場合に独立して、使用シナリオとして常に CPUS_LOGON を取得しますが、以前のバージョンの Windows では、セッションがロックされたときに CPUS_UNLOCK_WORKSTATION が返され、ログイン時に CPUS_LOGON が返されました。

Windows 10 以降、MSDN で報告されていない変更があったようです。

使用シナリオがセッションがロックされているかどうかを検出する他の方法はありますか?

4

4 に答える 4

7

現在、同じ問題を調査しており、Microsoft がドキュメントを更新できるようになるまで回避策があるかもしれません。

まだ CPUS_LOGON を受け取りますが、ロックされたユーザーと同じセッション内にいます。関数WTSQuerySessionInformationWを使用すると、現在のセッションに現在ログインしているユーザーが存在することを確認できます。そこから、CPUS_UNLOCK_WORKSTATION の使用シナリオにいるかのように続行できます。

更新 (2016 年 1 月 18 日): Microsoft は、この問題に関するドキュメントを最終的に更新したようです。以下のCREDENTIAL_PROVIDER_USAGE_SCENARIOドキュメントからの抜粋を参照してください。

Windows 10 以降では、CPUS_LOGONCPUS_UNLOCK_WORKSTATION ユーザー シナリオが組み合わされています。これにより、システムは、不必要にセッションを作成したり切り替えたりすることなく、マシンにログインする複数のユーザーをサポートできます。マシンがロックされると、現在のセッションから戻って新しいセッションを作成する必要なく、マシン上のすべてのユーザーがログインできます。このためCPUS_LOGON、システムへのログオン時とワークステーションのロックが解除されているときの両方に使用できます。ただし、 CPUS_LOGONすべての場合に使用できるわけではありません。さまざまなシステムによって課されるポリシーの制限により、ユーザー シナリオが必要になる場合があります。CPUS_UNLOCK_WORKSTATION. 資格情報プロバイダーは、与えられたシナリオに基づいて適切な資格情報構造を作成できるほど堅牢である必要があります。Windows は、状況に基づいて適切なユーザー シナリオを要求します。CPUS_UNLOCK_WORKSTATIONシナリオを使用する必要があるかどうかに影響を与える要因には、次のようなものがあります。これは可能性のサブセットにすぎないことに注意してください。

  • デバイスのオペレーティング システム。
  • これがコンソール セッションかリモート セッションか。
  • ユーザーをすばやく切り替えるためのエントリ ポイントの非表示や、ユーザーの姓を表示しない対話型ログオンなどのグループ ポリシー。

現在システムにログインしているユーザーを既定のタイルとして列挙する必要がある資格情報プロバイダーは、現在のユーザーを追跡したり、 WTSQuerySessionInformationその情報を取得するなどの API を活用したりできます。

于 2015-11-10T16:23:45.323 に答える