共用方式為


自訂 Winlogon

實作認證提供者來自訂 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 函式之前檢查目前的時間。 如果目前時間在特定範圍內,stub 函式可能會顯示一則訊息,指出在該期間不允許登入,並將 WLX_SAS_ACTION_NONE 傳回 Winlogon。 MsGina.dll的 WlxLoggedOutSAS 函式只會在允許的時間週期內呼叫。

GINA 存根應用程式會透過WlxInitialize函式的pWinlogonFunctions參數,取得分派資料表給 Winlogon 支援函式。 GINA 存根應用程式可以使用這個分派資料表來呼叫 Winlogon 支援函式。 例如,GINA 存根應用程式可以呼叫WlxSasNotify函式,在智慧卡插入讀取器時造成安全注意順序 (SAS) 事件。

如需建立 GINA 存根的詳細資訊,請參閱平臺軟體發展工具組的 \Samples\Security\Gina\GinaStub 目錄中的 Gina Stubs 範例, (SDK) 安裝。

注意

GINA 與 Winlogon 之間的所有呼叫都必須在單一線程內。

 

GINA 勾點

GINA 攔截是 GINA 存根,在 WlxInitialize 函式的實作中,將分派資料表中 WlxDialogBoxParam 支援的函式指標取代為其本身實作 WlxDialogBoxParam 函式的指標。 因此,每次先前安裝的 GINA (通常會MsGina.dll) 呼叫 WlxDialogBoxParam 函式時,就會呼叫 GINA 攔截所實作的函式。

GINA 攔截所實作的 WlxDialogBoxParam 函式可以取代回應特定對話方塊事件的 DialogProc 回 呼程式。

這可讓 GINA 攔截完全控制MsGina.dll建立之所有對話方塊的外觀和行為。

如需建立 GINA 攔截的詳細資訊,請參閱平臺 SDK 安裝之 \Samples\Security\Gina\GinaHook 目錄中的 Gina Hooks 範例。

注意

GINA 與 Winlogon 之間的所有呼叫都必須在單一線程內。