LogonUser возвращает ERROR_NO_LOGON_SERVERS

У меня есть приложение, которому необходимо проверить пароль сеанса Windows пользователя.

Для этого я использую LogonUser из Windows API. Пользователь может быть подключен к домену.

result = LogonUserW(wUsername, wDomain, wPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, pH);

Когда пользователь подключен к домену, функция работает хорошо, однако, когда пользователь отключает вайфай, или отключает лан-кабель, чтобы он был в автономном режиме, функция всегда возвращается с кодом ошибки 1311, что имеет значение «В настоящее время нет доступных серверов входа в систему для обслуживания запроса на вход».

Четвертым параметром функции LogonUser является тип выполняемой операции входа в систему. В документации говорится что, если значение этого параметра равно "LOGON32_LOGON_INTERACTIVE", тип входа требует дополнительных затрат на кэширование информации о входе в систему для отключенных операций, поэтому не должно ли это работать в случае, если пользователь находится в поле?

Заранее спасибо за помощь.


person skuallpa    schedule 09.03.2015    source источник


Ответы (1)


В итоге я использовал интерфейс поставщика поддержки безопасности (SSPI), как описано в качестве альтернативы LogonUser API на этой странице: Как проверить учетные данные пользователя в операционных системах Microsoft

Использование функции SSPLogonUser, как показано во фрагменте кода, позволило мне проверить учетные данные пользователя при подключении к домену, а также когда контроллер домена был недоступен (где в этом случае произошел сбой с помощью LogonUser API).

person skuallpa    schedule 03.04.2015