Win32 API 日本語リファレンス
ホームUI.Shell › CREDENTIAL_PROVIDER_USAGE_SCENARIO

CREDENTIAL_PROVIDER_USAGE_SCENARIO

列挙型
基底型i4

メンバー 6

名前10進16進説明
CPUS_INVALID00x0資格情報プロバイダーに使用シナリオが設定されていません。このシナリオが ICredentialProvider::SetUsageScenario に渡されることはありません。資格情報プロバイダーが現在の使用シナリオをクラスメンバーとして保持する場合、この値は ICredentialProvider::SetUsageScenario の初回呼び出し前の初期化値として利用できます。
CPUS_LOGON10x1ワークステーションへのログオンまたはロック解除です。詳細は解説を参照してください。このシナリオを実装する資格情報プロバイダーは、認証のために資格情報をローカル機関 (local authority) へシリアル化できるようにしておく必要があります。
CPUS_UNLOCK_WORKSTATION20x2ワークステーションのロック解除です。このシナリオを実装する資格情報プロバイダーは、認証のために資格情報をローカル機関 (local authority) へシリアル化できるようにしておく必要があります。また、これらの資格情報プロバイダーは、現在ログインしているユーザーを既定のタイルとして列挙する必要もあります。
CPUS_CHANGE_PASSWORD30x3パスワードの変更です。これにより、資格情報プロバイダーはユーザーからのパスワード変更要求に応じてタイルを列挙できます。パスワードや PIN などの秘密情報をユーザーから取得する必要がない場合は、このシナリオを実装しないでください。また、これらの資格情報プロバイダーは、現在ログインしているユーザーを既定のタイルとして列挙する必要もあります。
CPUS_CREDUI40x4資格情報 UI です。このシナリオでは、資格情報プロバイダーによってシリアル化された資格情報を、リモートコンピューター上での認証に使用できます。これは、ユーザーアクセス制御 (User Access Control) におけるオーバーザショルダー プロンプトにも使用されるシナリオです。このシナリオでは、CPUS_LOGONCPUS_UNLOCK_WORKSTATIONCPUS_CHANGE_PASSWORD に使用されるものとは異なる資格情報プロバイダーのインスタンスが使用されるため、異なるシナリオ間で資格情報プロバイダーの状態を維持することはできません。
CPUS_PLAP50x5

ログオン前アクセス プロバイダー (Pre-Logon-Access Provider) です。この使用シナリオに対応する資格情報プロバイダーは、次の場所に登録する必要があります。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\PLAP Providers

公式ドキュメント

資格情報プロバイダーがサポートされるシナリオを宣言します。資格情報プロバイダー使用シナリオ (CPUS) により、資格情報プロバイダーはシナリオごとに異なる列挙動作と UI フィールド構成を提供できます。ICredentialProvider が初期化されると、ICredentialProvider::SetUsageScenario が呼び出され、どの使用シナリオがサポートされるかが設定されます。そのシナリオは、資格情報プロバイダーの有効期間全体にわたって維持されます。

解説(Remarks)

Windows 10 以降では、CPUS_LOGONCPUS_UNLOCK_WORKSTATION のユーザーシナリオが統合されました。これにより、不要なセッションの作成や切り替えを行うことなく、複数のユーザーがコンピューターにログインできるようになります。コンピューターがロックされた後でも、そのコンピューター上の任意のユーザーは、現在のセッションから抜けて新しいセッションを作成する必要なくログインできます。このため、CPUS_LOGON はシステムへのログオン時とワークステーションのロック解除時の両方に使用できます。ただし、CPUS_LOGON をすべてのケースで使用できるわけではありません。さまざまなシステムによって課されるポリシーの制限により、ユーザーシナリオが CPUS_UNLOCK_WORKSTATION でなければならない場合があります。資格情報プロバイダーは、渡されたシナリオに基づいて適切な資格情報構造を作成できる十分な堅牢性を備えている必要があります。Windows は状況に応じて適切なユーザーシナリオを要求します。CPUS_UNLOCK_WORKSTATION シナリオを使用しなければならないかどうかに影響する要因には、次のようなものがあります。なお、これらは可能性の一部にすぎません。

現在システムにログインしているユーザーを既定のタイルとして列挙する必要がある資格情報プロバイダーは、現在のユーザーを自身で追跡するか、WTSQuerySessionInformation などの API を利用してその情報を取得できます。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum CREDENTIAL_PROVIDER_USAGE_SCENARIO : int {
    CPUS_INVALID = 0,
    CPUS_LOGON = 1,
    CPUS_UNLOCK_WORKSTATION = 2,
    CPUS_CHANGE_PASSWORD = 3,
    CPUS_CREDUI = 4,
    CPUS_PLAP = 5
} CREDENTIAL_PROVIDER_USAGE_SCENARIO;
public enum CREDENTIAL_PROVIDER_USAGE_SCENARIO : int
{
    CPUS_INVALID = 0,
    CPUS_LOGON = 1,
    CPUS_UNLOCK_WORKSTATION = 2,
    CPUS_CHANGE_PASSWORD = 3,
    CPUS_CREDUI = 4,
    CPUS_PLAP = 5,
}
Public Enum CREDENTIAL_PROVIDER_USAGE_SCENARIO As Integer
    CPUS_INVALID = 0
    CPUS_LOGON = 1
    CPUS_UNLOCK_WORKSTATION = 2
    CPUS_CHANGE_PASSWORD = 3
    CPUS_CREDUI = 4
    CPUS_PLAP = 5
End Enum
import enum

class CREDENTIAL_PROVIDER_USAGE_SCENARIO(enum.IntEnum):
    CPUS_INVALID = 0
    CPUS_LOGON = 1
    CPUS_UNLOCK_WORKSTATION = 2
    CPUS_CHANGE_PASSWORD = 3
    CPUS_CREDUI = 4
    CPUS_PLAP = 5
// CREDENTIAL_PROVIDER_USAGE_SCENARIO
pub const CPUS_INVALID: i32 = 0;
pub const CPUS_LOGON: i32 = 1;
pub const CPUS_UNLOCK_WORKSTATION: i32 = 2;
pub const CPUS_CHANGE_PASSWORD: i32 = 3;
pub const CPUS_CREDUI: i32 = 4;
pub const CPUS_PLAP: i32 = 5;
// CREDENTIAL_PROVIDER_USAGE_SCENARIO
const (
	CPUS_INVALID int32 = 0
	CPUS_LOGON int32 = 1
	CPUS_UNLOCK_WORKSTATION int32 = 2
	CPUS_CHANGE_PASSWORD int32 = 3
	CPUS_CREDUI int32 = 4
	CPUS_PLAP int32 = 5
)
const
  CPUS_INVALID = 0;
  CPUS_LOGON = 1;
  CPUS_UNLOCK_WORKSTATION = 2;
  CPUS_CHANGE_PASSWORD = 3;
  CPUS_CREDUI = 4;
  CPUS_PLAP = 5;
// CREDENTIAL_PROVIDER_USAGE_SCENARIO
pub const CPUS_INVALID: i32 = 0;
pub const CPUS_LOGON: i32 = 1;
pub const CPUS_UNLOCK_WORKSTATION: i32 = 2;
pub const CPUS_CHANGE_PASSWORD: i32 = 3;
pub const CPUS_CREDUI: i32 = 4;
pub const CPUS_PLAP: i32 = 5;
const
  CPUS_INVALID* = 0
  CPUS_LOGON* = 1
  CPUS_UNLOCK_WORKSTATION* = 2
  CPUS_CHANGE_PASSWORD* = 3
  CPUS_CREDUI* = 4
  CPUS_PLAP* = 5
enum CREDENTIAL_PROVIDER_USAGE_SCENARIO : int {
    CPUS_INVALID = 0,
    CPUS_LOGON = 1,
    CPUS_UNLOCK_WORKSTATION = 2,
    CPUS_CHANGE_PASSWORD = 3,
    CPUS_CREDUI = 4,
    CPUS_PLAP = 5,
}
#define global CPUS_INVALID            0x0
#define global CPUS_LOGON              0x1
#define global CPUS_UNLOCK_WORKSTATION 0x2
#define global CPUS_CHANGE_PASSWORD    0x3
#define global CPUS_CREDUI             0x4
#define global CPUS_PLAP               0x5