2016-02-11 7 views
0
bool bRet=LogonUser(strUserName, L"", strPassword, LOGON32_LOGON_TYPE_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &phToken)  

bRet всегда возвращает true, даже если я ввожу неправильный пароль, когда нет домена. Есть ли какая-либо работа, например, если я ввожу правильный пароль, он возвращает true и false для неправильного пароля, когда нет домена.LogonUser возвращает значение true для неправильного пароля

+0

Является ли токен действительным? – Stefan

+0

Да, это действительный токен. – Deepak

ответ

4

Предполагаю, что на LOGON32_LOGON_TYPE_NEW_CREDENTIALS вы на самом деле имеете в виду LOGON32_LOGON_NEW_CREDENTIALS. В этом случае поведение точно так же, как и следовало ожидать. Документация для этого флага гласит:

Этот тип входа позволяет вызывающему абоненту клонировать его текущий токен и указывать новые учетные данные для исходящих подключений. Новый сеанс входа в систему имеет тот же локальный идентификатор, но использует другие учетные данные для других сетевых подключений.

Для локальных соединений токен, который возвращается, является клоном текущего токена. Учетные данные, которые вы предоставили, - , только, используемые для исходящих соединений. При попытке таких подключений учетные данные будут проверяться в этой точке, и тогда вы можете ожидать сбой.