藉由實作認證提供者來自定義 Winlogon 行為。 如需認證提供者的相關信息,請參閱 ICredentialProvider 介面。
Windows Server 2003 和 Windows XP:不支援 認證提供者。
下列各節說明如何在 Windows Vista 之前的 Windows 版本中自定義 Winlogon。
注意
Windows Vista 中會忽略 GINA DLL 和 Winlogon 通知套件。
Winlogon 通知套件
Winlogon 通知套件是一個 DLL,可匯出處理 Winlogon 事件的函式。 例如,當使用者登入系統時,Winlogon 會呼叫每個通知套件,以提供事件的相關信息。 如需詳細資訊,請參閱 Winlogon 通知套件。
GINA Stubs
GINA 存根是自定義 GINA DLL,會使用先前安裝的 GINA DLL 的匯出函式實作(通常是 MsGina.dll)。 GINA 存根會取得先前安裝之 GINA DLL 所匯出之每個函式的指標。 然後,每個 GINA 存根函式都會使用適當的函式指標,在先前安裝的 GINA DLL 中呼叫對應的函式。
重要
每個 GINA 存根函式都必須在先前安裝的 GINA 中呼叫對應的函式。
GINA 存根函數可以在其一個或多個導出函數中實現額外的功能。 例如,GINA 存根的 WlxLoggedOutSAS 函式,可能會在呼叫 MsGina.dll的 WlxLoggedOutSAS 函式之前,先檢查目前的時間。 如果目前時間在特定範圍內,存根函式可能會顯示訊息,指出在該期間不允許登入,並將 WLX_SAS_ACTION_NONE 傳回 Winlogon。 MsGina.dll 的 WlxLoggedOutSAS 函式只會在允許的時間週期內呼叫。
GINA 存根應用程式會透過 WlxInitialize 函式的 pWinlogonFunctions 參數,取得 Winlogon 支援功能的分派表。 GINA 存根應用程式可以使用這個調用表來呼叫 Winlogon 支援函式。 例如,當 智慧卡 插入 讀取器時,GINA stub 應用程式可以呼叫 WlxSasNotify 函式,以造成 安全注意序列 (SAS) 事件。
如需建立 GINA 存根的詳細資訊,請參閱平臺軟體開發工具包 (SDK) 安裝之 \Samples\Security\Gina\GinaStub 目錄中的 Gina Stubs 範例。
注意
GINA 與 Winlogon 之間的所有呼叫都必須在單個線程內。
GINA 鉤子
GINA 標籤是 GINA 存根,在其實作 WlxInitialize 函式時,會將分派表中的 WlxDialogBoxParam 支援函式的指標取代為指向其自身實作的 WlxDialogBoxParam 函式的指標。 因此,每次先前安裝的 GINA(通常是 MsGina.dll)呼叫 WlxDialogBoxParam 函式時,都會呼叫由 GINA 鉤子所實作的函式。
GINA 攔截所實行的 WlxDialogBoxParam 函式可以取代 DialogProc 回呼程式,該程式負責回應特定對話框事件。
這使 GINA hook 可以完全控制 MsGina.dll 所建立的所有對話框的外觀和行為。
如需有關建立 GINA hook 的詳細資訊,請參閱平台 SDK 安裝的 \Samples\Security\Gina\GinaHook 目錄中的 Gina Hooks 範例。
注意
GINA 與 Winlogon 之間的所有呼叫都必須在單個線程內。