WinBioLogonIdentifiedUser-Funktion (winbio.h)
Die WinBioLogonIdentifiedUser-Funktion bewirkt einen schnellen Benutzerwechsel zu dem Konto, das dem letzten erfolgreichen Identifizierungsvorgang der biometrischen Sitzung zugeordnet ist.
Syntax
HRESULT WinBioLogonIdentifiedUser(
[in] WINBIO_SESSION_HANDLE SessionHandle
);
Parameter
[in] SessionHandle
Ein WINBIO_SESSION_HANDLE Wert, der die biometrische Sitzung identifiziert, die kürzlich einen erfolgreichen Identifizierungsvorgang durchgeführt hat. Öffnen Sie das Sitzungshandle, indem Sie WinBioOpenSession aufrufen.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt sie S_OK zurück. Wenn die Funktion fehlschlägt, gibt sie einen HRESULT-Wert zurück, der den Fehler angibt. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.
Rückgabecode | Beschreibung |
---|---|
|
Der Aufrufer verfügt nicht über die Berechtigung, benutzer zu wechseln, oder die biometrische Sitzung ist veraltet. |
|
Das Sitzungshandle ist ungültig. |
|
Der durch den SessionHandle-Parameter identifizierte Benutzer ist mit dem aktuellen Benutzer identisch. |
|
Der Benutzer konnte nicht angemeldet werden. |
|
Die aktuelle Verwaltungsrichtlinie verbietet die Verwendung des Anmeldeinformationsanbieters. |
|
Der schnelle Benutzerwechsel ist nicht aktiviert. |
|
Ein schneller Benutzerwechsel kann nicht durchgeführt werden, da die sichere Anmeldung (STRG+ALT+ENTF) derzeit aktiviert ist. |
Hinweise
Die WinBioLogonIdentifiedUser-Funktion wird in der Regel von Anwendungen aufgerufen, die einen schnellen Benutzerwechsel unterstützen, wenn sie einen anderen Benutzer als den derzeit angemeldeten benutzer identifizieren.
Der schnelle Benutzerwechselversuch kann ein Anmeldeereignis im Sicherheitsprotokoll hinterlassen, aber die Identität wird nicht automatisch gespeichert, wenn der Anmeldeinformations-Manager beendet wird.
Die biometrische Sitzung, die durch den SessionHandle-Parameter angegeben wird, steuert das Zielkonto für das Ereignis des schnellen Benutzerwechsels. Wenn dieses Handle kürzlich zum Ausführen eines Identifizierungsvorgangs verwendet wurde, wird die resultierende Identität nach dem schnellen Benutzerwechsel angemeldet.
Aus Sicherheitsgründen erfordert das Windows Biometric Framework, dass der Identifizierungsvorgang und der Aufruf von WinBioLogonIdentifiedUser innerhalb kurzer Zeit erfolgen. Nach diesem Zeitraum gilt die Identifizierung als veraltet, und der Aufruf von WinBioLogonIdentifiedUser schlägt fehl. Das Standardtimeoutintervall beträgt fünf Sekunden, aber ein Administrator kann es bis zu 60 Sekunden festlegen.
Das Aufrufen dieser Funktion, wenn der Zielbenutzer mit dem aktuellen Benutzer identisch ist , S_FALSE zurückgibt und der Versuch des schnellen Benutzerwechsels ignoriert wird.
Beispiele
Die folgende Funktion ruft WinBioLogonIdentifiedUser auf, um sich bei einem zuvor identifizierten Benutzer anzumelden. Damit diese Funktion ordnungsgemäß funktioniert, muss die sichere Anmeldung nicht aktiviert sein. Verknüpfen Sie die statische Bibliothek Winbio.lib, und fügen Sie die folgenden Headerdateien ein:
- 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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbio.h (einschließlich Winbio.h) |
Bibliothek | Winbio.lib |
DLL | Winbio.dll |