ICredentialProviderUser
COM公式ドキュメント
ログオン UI または資格情報 UI に含まれる個々のユーザーの特定のプロパティを取得するためのメソッドを提供します。
解説(Remarks)
Windows 8 では、資格情報プロバイダーをユーザーごとにグループ化する機能が導入されました。ログオン UI は、ユーザーごとに複数の資格情報プロバイダーのセットを表示するのではなく、ユーザーのセットを表示できます。ユーザーを選択すると、そのユーザーに関連付けられた個々の資格情報プロバイダーのオプションが表示されます。
実装するタイミング
サードパーティがこのインターフェイスを実装することはありません。実装は Windows に含まれています。メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ユーザーのセキュリティ識別子 (SID) を取得します。(ICredentialProviderUser.GetSid)
| sid | LPWSTR* | out | このメソッドが正常に返された場合に、ユーザーの SID を受け取るバッファーへのポインターのアドレス。このリソースを解放するために CoTaskMemFree 関数を呼び出すのは、呼び出し元の責任です。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
この SID は、ログオン UI と資格情報 UI の両方に適用されます。
この値は、ICredentialProviderUser::GetValue を通じて PROPVARIANT として取得することもできます。
このユーザーのアカウントプロバイダーの ID を取得します。
| providerID | GUID* | out | このメソッドが正常に返された場合に、ユーザーのアカウントプロバイダーの GUID を受け取る値へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
この GUID は、ログオン UI と資格情報 UI の両方に適用されます。
この値は、ICredentialProviderUser::GetValue を通じて PROPVARIANT として取得することもできます。
入力値に基づいて、ICredentialProviderUser オブジェクトから文字列プロパティを取得します。
| key | PROPERTYKEY* | in | 取得するプロパティを指定する、次のいずれかの値。
| |||||||||||||||||||||
| stringValue | LPWSTR* | out | このメソッドが正常に返された場合に、要求された文字列を受け取るバッファーへのポインターのアドレス。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
これらの各値は、ICredentialProviderUser::GetValue を通じて PROPVARIANT として取得することもできます。
次のユーザーを含むシナリオを考えます。
- ドメインユーザー:
- ドメイン: contoso
- ユーザー名: lisa
- フレンドリ名: Lisa Andrews
- ローカルユーザー:
- PC 名: lisa-pc
- ユーザー名: lisa
- フレンドリ名: Lisa Andrews
- Microsoft アカウント:
- メールアドレス: lisa@contoso.com
- フレンドリ名: Lisa Andrews
| REFPROPERTYKEY | ドメインユーザー | ローカルユーザー | Microsoft アカウント |
|---|---|---|---|
| PKEY_Identity_DisplayName | "Lisa Andrews" | "Lisa Andrews" | "Lisa Andrews" |
| PKEY_Identity_LogonStatusString | "Signed-in" | "Locked" | "Remotely signed in from lisa-pc" |
| PKEY_Identity_PrimarySid | "{S-1-5-21-2279990834-2601404236-735077814-1001}" | "{S-1-5-21-2279990834-2601404236-735077814-1001}" | "{S-1-5-21-2279990834-2601404236-735077814-1001}" |
| PKEY_Identity_ProviderID | "{A198529B-730F-4089-B646-A12557F5665E}" | "{A198529B-730F-4089-B646-A12557F5665E}" | 事前定義されていません |
| PKEY_Identity_QualifiedUserName | "contoso\lisa" | "lisa-pc\lisa" | "<account provider name>\lisa@contoso.com" |
| PKEY_Identity_UserName | "contoso\lisa" | "lisa" | "lisa@contoso.com" |
ユーザーに設定された指定のプロパティ値を取得します。
| key | PROPERTYKEY* | in | 取得するプロパティを指定する、次のいずれかの値。
| ||||||||||||||
| value | PROPVARIANT* | out | このメソッドが正常に返された場合に、要求されたプロパティ値を受け取る値へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
PKEY_Identity_DisplayName、PKEY_Identity_UserName、PKEY_Identity_QualifiedUserName、および PKEY_Identity_LogonStatusString の各値は、GetStringValue メソッドを通じて文字列として直接取得できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICredentialProviderUser "{13793285-3EA6-40FD-B420-15F47DA41FBB}" #usecom global ICredentialProviderUser IID_ICredentialProviderUser "{}" #comfunc global ICredentialProviderUser_GetSid 3 var #comfunc global ICredentialProviderUser_GetProviderID 4 var #comfunc global ICredentialProviderUser_GetStringValue 5 var,var #comfunc global ICredentialProviderUser_GetValue 6 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ICredentialProviderUser "{13793285-3EA6-40FD-B420-15F47DA41FBB}" #usecom global ICredentialProviderUser IID_ICredentialProviderUser "{}" #comfunc global ICredentialProviderUser_GetSid 3 sptr #comfunc global ICredentialProviderUser_GetProviderID 4 sptr #comfunc global ICredentialProviderUser_GetStringValue 5 sptr,sptr #comfunc global ICredentialProviderUser_GetValue 6 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。