Win32 API 日本語リファレンス
ホーム › NetworkManagement.WNet › PF_NPLogonNotify

PF_NPLogonNotify

コールバック

シグネチャ

DWORD PF_NPLogonNotify(
    LUID* lpLogonId,
    LPWSTR lpAuthentInfoType,
    void* lpAuthentInfo,
    LPWSTR lpPreviousAuthentInfoType,
    void* lpPreviousAuthentInfo,
    LPWSTR lpStationName,
    void* StationHandle,
    LPWSTR* lpLogonScript
);

パラメーター

フィールド型説明
lpLogonIdLUID*ログオンしたばかりの セッション の識別子へのポインターです。
lpAuthentInfoTypeLPWSTR

lpAuthentInfo が指す構造体の型を識別する文字列へのポインターです。

Microsoft がプライマリ認証機関である場合、対話型ログオンおよびサービスコントローラーによるログオンでは、次のいずれかの文字列が指定されます。

MSV1_0:Interactive
Kerberos:Interactive
lpAuthentInfovoid*

プライマリ認証機関を通じてユーザーのログオンに成功したときに使用された資格情報を格納する構造体へのポインターです。

Microsoft がプライマリ認証機関である場合(つまり lpAuthentifoType が "MSV1_0:Interactive" または "Kerberos:Interactive" の場合)、使用される構造体は MSV1_0_INTERACTIVE_LOGON または KERB_INTERACTIVE_LOGON です。

lpPreviousAuthentInfoTypeLPWSTR

lpPreviousAuthentInfo が指す構造体の型を識別する文字列へのポインターです。このポインターが NULL の場合、以前の情報はありません。ここで想定される値は lpAuthentInfoType と同じです。

Microsoft がプライマリ認証機関である場合、対話型ログオンおよびサービスコントローラーによるログオンでは、次の文字列が指定されます。

MSV1_0:Interactive
lpPreviousAuthentInfovoid*

認証情報が変更される前に使用されていた資格情報を格納する構造体へのポインターです。ユーザーがログオン前にパスワード(またはその他の認証情報)の変更を強制された場合に、変更前の情報が提供されます。ユーザーが認証情報の変更を強制されなかった場合、このポインターは NULL です。ここで想定される値は lpAuthentInfo と同じです。

Microsoft がプライマリ認証機関である場合、使用される構造体は MSV1_0_INTERACTIVE_LOGON または KERB_INTERACTIVE_LOGON です。

lpStationNameLPWSTR

ユーザーがログオンしたステーションの名前を指定する文字列へのポインターです。ステーション名は、追加の(プロバイダー固有の)情報を取得できるかどうかを判断するために使用できます。

Microsoft がプライマリ認証機関である場合、次のいずれかの文字列が指定されます。

値 意味
WinSta_0
ウィンドウステーションを介した対話型ログオンであることを示します。この場合、StationHandle は親ダイアログボックスへの HWND です。
SvcCtl
サービスコントローラーによって開始されたログオンであることを示します。この場合、StationHandle は使用されません。
StationHandlevoid*

lpStationName で指定されたステーションの名前(したがってその種類)によって意味が決まる 32 ビット値です。

値 意味
WinSta_0
現在画面に表示されている所有者ダイアログボックス (hwndOwner) へのハンドルです。
SvcCtl
ランダムなデータです。使用しないでください。
lpLogonScriptLPWSTR*

null で終わる文字列へのポインターを返すことができる場所へのポインターです。

関数の完了後、この値は、実行するプログラムの名前とそのプログラムが必要とするパラメーターを格納した null で終わる文字列を指すことがあります。返される文字列のメモリの割り当てには LocalAlloc を使用してください。このメモリは、不要になった時点で MPR によって解放されます。

公式ドキュメント

メモ

この API は非推奨であり、将来のリリースで削除される予定です。

MPR は、ログオンイベントが発生したことを資格情報マネージャーに通知するためにこの関数を呼び出します。これにより、資格情報マネージャーはログオンスクリプトを返すことができます。NPLogonNotify 関数は、資格情報マネージャー DLL によって実装されます(「解説」を参照してください)。

戻り値

関数が成功した場合は WN_SUCCESS を返します。

関数が失敗した場合はエラーコードを返します。エラーコードは次のいずれかです。

戻り値 説明
WN_NOT_SUPPORTED

NPLogonNotify が資格情報マネージャーでサポートされていません。

WN_NO_NETWORK
ネットワークが存在しません。
WN_FUNCTION_BUSY
資格情報マネージャーはまだ初期化中であり、呼び出せる状態ではありません。

解説(Remarks)

NPLogonNotify 関数は、認証情報が変更されたときに通知を受け取るために、資格情報マネージャーによって実装されます。

各資格情報マネージャーは、ログオンスクリプトの実行に使用できるコマンドライン文字列を 1 つだけ返すことができます(実装から LogonUser を直接呼び出したり、ユーザープロファイルを直接読み込んだりしないでください)。この文字列のバッファーは資格情報マネージャーが割り当てます。これを解放する責任は MPR にあります。lpLogonScript に返される文字列には、 CreateProcess に渡すコマンドラインとしてスクリプトを実行するために必要な情報がすべて含まれている必要があります。

コマンドやバッチファイルの場合のように、文字列の処理にコマンドプロセッサが必要な場合は、文字列の先頭に cmd /C を付けてください。

ログオンスクリプトは、ユーザープロファイルが利用可能になった時点でユーザーコンテキストで実行されます。ただし、設定された環境変数はグローバルにはならず、最初のシェル(プログラムマネージャーなど)や、ユーザーの代わりに実行される他のプログラムからは利用できません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)