現在、同じ問題を調査しており、Microsoft がドキュメントを更新できるようになるまで回避策があるかもしれません。
まだ CPUS_LOGON を受け取りますが、ロックされたユーザーと同じセッション内にいます。関数WTSQuerySessionInformationWを使用すると、現在のセッションに現在ログインしているユーザーが存在することを確認できます。そこから、CPUS_UNLOCK_WORKSTATION の使用シナリオにいるかのように続行できます。
更新 (2016 年 1 月 18 日): Microsoft は、この問題に関するドキュメントを最終的に更新したようです。以下のCREDENTIAL_PROVIDER_USAGE_SCENARIOドキュメントからの抜粋を参照してください。
Windows 10 以降では、CPUS_LOGON
とCPUS_UNLOCK_WORKSTATION
ユーザー シナリオが組み合わされています。これにより、システムは、不必要にセッションを作成したり切り替えたりすることなく、マシンにログインする複数のユーザーをサポートできます。マシンがロックされると、現在のセッションから戻って新しいセッションを作成する必要なく、マシン上のすべてのユーザーがログインできます。このためCPUS_LOGON
、システムへのログオン時とワークステーションのロックが解除されているときの両方に使用できます。ただし、
CPUS_LOGON
すべての場合に使用できるわけではありません。さまざまなシステムによって課されるポリシーの制限により、ユーザー シナリオが必要になる場合があります。CPUS_UNLOCK_WORKSTATION
. 資格情報プロバイダーは、与えられたシナリオに基づいて適切な資格情報構造を作成できるほど堅牢である必要があります。Windows は、状況に基づいて適切なユーザー シナリオを要求します。CPUS_UNLOCK_WORKSTATION
シナリオを使用する必要があるかどうかに影響を与える要因には、次のようなものがあります。これは可能性のサブセットにすぎないことに注意してください。
- デバイスのオペレーティング システム。
- これがコンソール セッションかリモート セッションか。
- ユーザーをすばやく切り替えるためのエントリ ポイントの非表示や、ユーザーの姓を表示しない対話型ログオンなどのグループ ポリシー。
現在システムにログインしているユーザーを既定のタイルとして列挙する必要がある資格情報プロバイダーは、現在のユーザーを追跡したり、
WTSQuerySessionInformation
その情報を取得するなどの API を活用したりできます。