CREDENTIALW 構造体 (wincred.h)

CREDENTIAL 構造体には、個々の資格情報が含まれています。

構文

typedef struct _CREDENTIALW {
  DWORD                  Flags;
  DWORD                  Type;
#if ...
  wchar_t                *TargetName;
#else
  LPWSTR                 TargetName;
#endif
#if ...
  wchar_t                *Comment;
#else
  LPWSTR                 Comment;
#endif
  FILETIME               LastWritten;
  DWORD                  CredentialBlobSize;
  LPBYTE                 CredentialBlob;
  DWORD                  Persist;
  DWORD                  AttributeCount;
  PCREDENTIAL_ATTRIBUTEW Attributes;
#if ...
  wchar_t                *TargetAlias;
#else
  LPWSTR                 TargetAlias;
#endif
#if ...
  wchar_t                *UserName;
#else
  LPWSTR                 UserName;
#endif
} CREDENTIALW, *PCREDENTIALW;

メンバー

Flags

資格情報の特性を識別するビット メンバー。 未定義のビットは 0 として初期化する必要があります。それ以外の場合は、将来の拡張を許可するように変更しないでください。

説明
CRED_FLAGS_PROMPT_NOW
2 (0x2)
資格情報が CredentialBlob を保持せず、このログオン セッション中に資格情報が書き込まれていない場合に設定されるビット。 このビットは入力時に無視され、照会時に自動的に設定されます。

TypeCRED_TYPE_DOMAIN_CERTIFICATEの場合、証明書の PIN は非常に機密性の高い情報であるため、CredentialBlob はログオン セッション間で保持されません。 実際、資格情報が資格情報マネージャーに書き込まれると、PIN は証明書に関連付けられている CSP に渡されます。 CSP は、証明書に適した PIN 保持ポリシーを適用します。

TypeCRED_TYPE_DOMAIN_PASSWORDまたはCRED_TYPE_DOMAIN_CERTIFICATEの場合、認証パッケージは、CRED_FLAGS_PROMPT_NOWとしてマークされた資格情報を使用すると、常に認証試行に失敗します。 アプリケーション (通常はキー リング UI を使用) は、ユーザーにパスワードの入力を求めます。 アプリケーションは資格情報を保存し、認証を再試行します。 資格情報が最近書き込まれたため、認証パッケージは、CRED_FLAGS_PROMPT_NOWとしてマークされていない資格情報を取得するようになりました。

CRED_FLAGS_USERNAME_TARGET
4 (0x4)
この資格情報の TargetName メンバーが UserName メンバーと同じ値に設定されている場合、ビットが設定されます。 このような資格情報は、特定のユーザーの CredentialBlob を格納するように設計されています。 詳細については、 CredMarshalCredential 関数に関するページ を参照してください。

このビットは、 TypeCRED_TYPE_DOMAIN_PASSWORD または CRED_TYPE_DOMAIN_CERTIFICATEの場合にのみ指定できます。

Type

資格情報の種類。 このメンバーは、資格情報の作成後に変更することはできません。 次の値が有効です。

説明
CRED_TYPE_GENERIC
1 (0x1)
資格情報は汎用資格情報です。 資格情報は、特定の認証パッケージでは使用されません。 資格情報は安全に格納されますが、他の重要な特性はありません。
CRED_TYPE_DOMAIN_PASSWORD
2 (0x2)
資格情報はパスワード資格情報であり、Microsoft の認証パッケージに固有です。 NTLM、Kerberos、および Negotiate 認証パッケージは、名前付きターゲットに接続するときに、この資格情報を自動的に使用します。
CRED_TYPE_DOMAIN_CERTIFICATE
3 (0x3)
資格情報は証明書の資格情報であり、Microsoft の認証パッケージに固有です。 Kerberos、Negotiate、および Schannel 認証パッケージは、名前付きターゲットに接続するときに、この資格情報を自動的に使用します。
CRED_TYPE_DOMAIN_VISIBLE_PASSWORD
4 (0x4)
この値はサポートされなくなりました。

Windows Server 2003 および Windows XP: 資格情報はパスワード資格情報であり、Microsoft からの認証パッケージに固有です。 Passport 認証パッケージは、名前付きターゲットに接続するときに、この資格情報を自動的に使用します。

将来、追加の値が定義される予定です。 アプリケーションは、理解できない資格情報の種類を許可するように記述する必要があります。

CRED_TYPE_GENERIC_CERTIFICATE
5 (0x5)
資格情報は、汎用認証パッケージである証明書資格情報です。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。

CRED_TYPE_DOMAIN_EXTENDED
6 (0x6)
資格情報は、拡張ネゴシエート パッケージでサポートされています。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。

CRED_TYPE_MAXIMUM
7 (0x7)
サポートされている資格情報の種類の最大数。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。

CRED_TYPE_MAXIMUM_EX
CRED_TYPE_MAXIMUM+1000
以前のオペレーティング システムで新しいアプリケーションを実行できるようにする、サポートされている資格情報の種類の拡張最大数。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。

TargetName

資格情報の名前。 TargetName メンバーと Type メンバーは、資格情報を一意に識別します。 このメンバーは、資格情報の作成後に変更することはできません。 代わりに、古い名前の資格情報と、新しい名前が作成された資格情報を削除する必要があります。

TypeCRED_TYPE_DOMAIN_PASSWORDまたはCRED_TYPE_DOMAIN_CERTIFICATEの場合、このメンバーは資格情報を使用するサーバーを識別します。 メンバーは、NetBIOS または DNS サーバー名、ワイルドカード文字を含む DNS ホスト名サフィックス、ワイルドカード文字シーケンスを含む NetBIOS または DNS ドメイン名、またはアスタリスクのいずれかです。

TargetName が DNS ホスト名の場合、TargetAlias メンバーにはホストの NetBIOS 名を指定できます。

TargetName がワイルドカード文字を含む DNS ホスト名サフィックスの場合、DNS ホスト名の左端のラベルはアスタリスク (*) です。これは、ターゲット名が指定した名前で終わる任意のサーバー (例: *.microsoft.com) であることを示します。

TargetName がワイルドカード文字シーケンスを含むドメイン名の場合、構文はドメイン名の後に円記号とアスタリスク (\*) が続きます。これは、ターゲット名が名前付きドメイン (または領域) のメンバーである任意のサーバーであることを示します。

TargetName がワイルドカード文字シーケンスを含む DNS ドメイン名の場合、TargetAlias メンバーには、同じドメインのワイルドカード シーケンスを使用する NetBIOS ドメイン名を指定できます。

TargetName で DFS 共有 (DfsRoot\DfsShare など) が指定されている場合、この資格情報は、特定の DFS 共有とその DFS 共有を介して到達したサーバーと一致します。

TargetName が 1 つのアスタリスク (*) の場合、この資格情報は任意のサーバー名と一致します。

TargetName がCRED_SESSION_WILDCARD_NAMEされている場合、この資格情報は任意のサーバー名と一致します。 この資格情報は 1 つのアスタリスクの前に一致し、 PersistCRED_PERSIST_SESSIONの場合にのみ有効です。 資格情報は、既定の資格情報を一時的にオーバーライドするアプリケーションによって設定できます。

このメンバーは 、CRED_MAX_DOMAIN_TARGET_NAME_LENGTH (337) 文字を超えることはできません。

Type がCRED_TYPE_GENERICの場合、このメンバーは、実際のターゲットに加えて資格情報を使用するサービスを識別する必要があります。 Microsoft は、サービスを実装する会社の名前の前に名前を付ける必要があります。 Microsoft はプレフィックス "Microsoft" を使用します。 Microsoft によって作成されたサービスには、サービス名 ( 例: Microsoft_RAS_TargetName) を追加する必要があります。 このメンバーは 、CRED_MAX_GENERIC_TARGET_NAME_LENGTH (32767) 文字を超えることはできません。

このメンバーでは、大文字と小文字は区別されません。

Comment

この資格情報を記述するユーザーからの文字列コメント。 このメンバーは 、CRED_MAX_STRING_LENGTH (256) 文字を超えることはできません。

LastWritten

資格情報の最後の変更の協定世界時 (グリニッジ標準時) の時刻。 書き込み操作の場合、このメンバーの値は無視されます。

CredentialBlobSize

CredentialBlob メンバーのサイズ (バイト単位)。 このメンバーは 、CRED_MAX_CREDENTIAL_BLOB_SIZE (5*512) バイトを超えることはできません。

CredentialBlob

資格情報のシークレット データ。 CredentialBlob メンバーは、読み取りと書き込みの両方を行うことができます。

Type メンバーがCRED_TYPE_DOMAIN_PASSWORD場合、このメンバーには UserName のプレーンテキスト Unicode パスワードが含まれます。 CredentialBlob メンバーと CredentialBlobSize メンバーには、末尾に 0 文字は含まれません。 また、 CRED_TYPE_DOMAIN_PASSWORDの場合、このメンバーは認証パッケージでのみ読み取ることができます。

Type メンバーがCRED_TYPE_DOMAIN_CERTIFICATE場合、このメンバーには UserName の明確なテスト Unicode PIN が含まれます。 CredentialBlob メンバーと CredentialBlobSize メンバーには、末尾に 0 文字は含まれません。 また、このメンバーは認証パッケージでのみ読み取ることができます。

Type メンバーがCRED_TYPE_GENERIC場合、このメンバーはアプリケーションによって定義されます。

資格情報は移植可能である必要があります。 アプリケーションでは、 CredentialBlob のデータが移植可能であることを確認する必要があります。 アプリケーションは、 CredentialBlob でデータのバイト エンディアンとアラインメントを定義します。

Persist

この資格情報の永続化を定義します。 このメンバーは、読み取りと書き込みが可能です。

説明
CRED_PERSIST_SESSION
1 (0x1)
資格情報は、ログオン セッションの有効期間にわたって保持されます。 この同じユーザーの他のログオン セッションには表示されません。 このユーザーがログオフしてから再度ログオンした後は存在しません。
CRED_PERSIST_LOCAL_MACHINE
2 (0x2)
資格情報は、この同じコンピューター上の後続のすべてのログオン セッションに対して保持されます。 この同じコンピューター上の同じユーザーの他のログオン セッションには表示され、他のコンピューター上のこのユーザーのログオン セッションには表示されません。

Windows Vista Home Basic、Windows Vista Home Premium、Windows Vista Starter、Windows XP Home Edition: この値はサポートされていません。

CRED_PERSIST_ENTERPRISE
3 (0x3)
資格情報は、この同じコンピューター上の後続のすべてのログオン セッションに対して保持されます。 この同じコンピューター上の同じユーザーの他のログオン セッションと、他のコンピューター上のこのユーザーのログオン セッションに表示されます。

管理者またはユーザーがユーザー アカウントにローミング可能な状態を持たないように構成している場合、このオプションはローカルに永続化された資格情報として実装できます。 たとえば、ユーザーにローミング プロファイルがない場合、資格情報はローカルでのみ保持されます。

Windows Vista Home Basic、Windows Vista Home Premium、Windows Vista Starter、Windows XP Home Edition: この値はサポートされていません。

AttributeCount

資格情報に関連付けるアプリケーション定義属性の数。 このメンバーは、読み取りと書き込みが可能です。 その値は 、CRED_MAX_ATTRIBUTES (64) より大きくすることはできません。

Attributes

資格情報に関連付けられているアプリケーション定義の属性。 このメンバーは、読み取りと書き込みが可能です。

TargetAlias

TargetName メンバーのエイリアス。 このメンバーは、読み取りと書き込みが可能です。 CRED_MAX_STRING_LENGTH (256) 文字より長くすることはできません。

資格情報の 種類CRED_TYPE_GENERICの場合、このメンバーは NULL 以外にすることができますが、資格情報マネージャーはメンバーを無視します。

UserName

TargetName への接続に使用するアカウントのユーザー名。

資格情報の 種類CRED_TYPE_DOMAIN_PASSWORDの場合、このメンバーには DomainName\UserName または UPN を指定できます。

資格情報の 種類CRED_TYPE_DOMAIN_CERTIFICATEの場合、このメンバーは、CertCredential で CredMarshalCredential を呼び出すことによって作成されたマーシャリングされた証明書参照である必要があります。

資格情報の 種類CRED_TYPE_GENERICの場合、このメンバーは NULL 以外にすることができますが、資格情報マネージャーはメンバーを無視します。

このメンバーは 、CRED_MAX_USERNAME_LENGTH (513) 文字を超えることはできません。

解説

注意

wincred.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CREDENTIAL を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header wincred.h