共用方式為


WinBioLogonIdentifiedUser 函式 (winbio.h)

WinBioLogonIdentifiedUser函式會導致快速使用者切換至與生物特徵辨識會話所執行最後一次成功識別作業相關聯的帳戶。

語法

HRESULT WinBioLogonIdentifiedUser(
  [in] WINBIO_SESSION_HANDLE SessionHandle
);

參數

[in] SessionHandle

WINBIO_SESSION_HANDLE值,識別最近執行成功識別作業的生物特徵辨識會話。 呼叫 WinBioOpenSession來開啟會話控制碼。

傳回值

如果函式成功,它會傳回 S_OK。 如果函式失敗,它會傳回 HRESULT 值,指出錯誤。 可能的值包括 (但不限於) 下表中的這些值。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值

傳回碼 描述
E_ACCESSDENIED
呼叫端沒有切換使用者的許可權,或生物特徵辨識會話已過期。
E_HANDLE
會話控制碼無效。
S_FALSE
SessionHandle參數所識別的使用者與目前使用者相同。
SEC_E_LOGON_DENIED
無法登入使用者。
WINBIO_E_CRED_PROV_DISABLED
目前的系統管理原則禁止使用認證提供者。
WINBIO_E_FAST_USER_SWITCH_DISABLED
未啟用快速使用者切換。
WINBIO_E_SAS_ENABLED
無法執行快速使用者切換,因為目前已啟用安全登入 (CTRL+ALT+DELETE) 。

備註

WinBioLogonIdentifiedUser函式通常由支援快速使用者切換的應用程式呼叫,這些應用程式識別目前登入的使用者以外的使用者。

快速使用者切換嘗試可能會讓登入事件保留在安全性記錄檔中,但認證管理員終止時不會自動儲存身分識別。

SessionHandle參數所指定的生物特徵辨識會話會控制快速使用者切換事件的目標帳戶。 如果最近使用該控制碼來執行識別作業,則產生的身分識別會在快速使用者切換之後登入。

基於安全性考慮,Windows 生物特徵辨識架構要求識別作業和 WinBioLogonIdentifiedUser 的呼叫會在短時間內發生。 在該期間之後,識別會被視為過期,而且 WinBioLogonIdentifiedUser 的呼叫將會失敗。 預設的逾時間隔為五秒,但系統管理員可以將其設為 60 秒。

當目標使用者與目前使用者傳回 S_FALSE相同, 且會忽略快速使用者切換嘗試時呼叫此函式。

範例

下列函式會呼叫 WinBioLogonIdentifiedUser,以登入先前識別的使用者。 若要讓此函式正常運作,不得啟用安全登入。 連結到 Winbio.lib 靜態程式庫,並包含下列標頭檔:

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT LogonIdentifiedUser()
{
    // Declare variables.
    HRESULT hr;
    WINBIO_SESSION_HANDLE sessionHandle = NULL;
    WINBIO_UNIT_ID  UnitId;
    WINBIO_IDENTITY Identity;
    WINBIO_BIOMETRIC_SUBTYPE SubFactor;
    WINBIO_REJECT_DETAIL RejectDetail;
    BOOL    bContinue = TRUE;

    // Connect to the system pool. 
    hr = WinBioOpenSession( 
            WINBIO_TYPE_FINGERPRINT,    // Service provider
            WINBIO_POOL_SYSTEM,         // Pool type
            WINBIO_FLAG_DEFAULT,        // Configuration and access
            NULL,                       // Array of biometric unit IDs
            0,                          // Count of biometric unit IDs
            WINBIO_DB_DEFAULT,                       // Database ID
            &sessionHandle              // [out] Session handle
            );
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioOpenSession failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Locate the biometric sensor and retrieve a WINBIO_IDENTITY object.
    // You must swipe your finger on the sensor.
    wprintf_s(L"\n Calling WinBioIdentify - Swipe finger on sensor...\n");
    while(bContinue)
    {
        hr = WinBioIdentify(
                sessionHandle,          // Session handle    
                &UnitId,                // Biometric unit ID
                &Identity,              // User SID or GUID
                &SubFactor,             // Finger sub factor
                &RejectDetail           // rejection information
                );

        switch(hr)
        {
        case S_OK:
            bContinue = FALSE;
            break;
        default:
            wprintf_s(L"\n WinBioIdentify failed. hr = 0x%x\n", hr);
            break;
        }
    }

    if (SUCCEEDED(hr))
    {
        // Switch to the target after receiving a good identity.
        hr = WinBioLogonIdentifiedUser(sessionHandle);

        switch(hr)
        {
        case S_FALSE:
            printf("\n Target is the logged on user. No action taken.\n");
            break;
        case S_OK:
            printf("\n Fast user switch initiated.\n");
            break;
        default:
            wprintf_s(L"\n WinBioLogonIdentifiedUser failed. hr = 0x%x\n", hr);
            break;
        }
    }

e_Exit:

    if (sessionHandle != NULL)
    {
        WinBioCloseSession(sessionHandle);
        sessionHandle = NULL;
    }

    wprintf_s(L"\n Press any key to exit...");
    _getch();

    return hr;
}


規格需求

   
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限傳統型應用程式]
目標平台 Windows
標頭 winbio.h (包含 Winbio.h)
程式庫 Winbio.lib
Dll Winbio.dll

另請參閱

WinBioIdentify

WinBioIdentifyWithCallback