Функция WinBioLogonIdentifiedUser (winbio.h)
Функция WinBioLogonIdentifiedUser вызывает быстрое переключение пользователя на учетную запись, связанную с последней успешной операцией идентификации, выполненной биометрическим сеансом.
Синтаксис
HRESULT WinBioLogonIdentifiedUser(
[in] WINBIO_SESSION_HANDLE SessionHandle
);
Параметры
[in] SessionHandle
Значение WINBIO_SESSION_HANDLE , определяющее биометрический сеанс, который недавно успешно выполнил операцию идентификации. Откройте дескриптор сеанса, вызвав WinBioOpenSession.
Возвращаемое значение
Если функция завершается успешно, она возвращает S_OK. Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
Код возврата | Описание |
---|---|
|
Вызывающий объект не имеет разрешения на переключение пользователей или биометрический сеанс устарел. |
|
Недопустимый дескриптор сеанса. |
|
Пользователь, определяемый параметром SessionHandle , совпадает с текущим пользователем. |
|
Не удалось войти в систему. |
|
Текущая политика администрирования запрещает использование поставщика учетных данных. |
|
Быстрое переключение пользователей не включено. |
|
Не удается выполнить быстрое переключение пользователей, так как сейчас включен безопасный вход (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 |
Header | winbio.h (включая Winbio.h) |
Библиотека | Winbio.lib |
DLL | Winbio.dll |