bool bRet=LogonUser(strUserName, L"", strPassword, LOGON32_LOGON_TYPE_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &phToken)
bRet всегда возвращает true, даже если я ввожу неправильный пароль, когда домена нет. Есть ли обходной путь, например, если я ввожу действительный пароль, он возвращает истину и ложь для неправильного пароля, когда нет домена.
Я предполагаю, что LOGON32_LOGON_TYPE_NEW_CREDENTIALS
вы на самом деле имеете в виду LOGON32_LOGON_NEW_CREDENTIALS
, В этом случае поведение точно так, как и следовало ожидать. Документация для этого флага гласит:
Этот тип входа позволяет вызывающему абоненту клонировать свой текущий токен и указать новые учетные данные для исходящих соединений. Новый сеанс входа в систему имеет тот же локальный идентификатор, но использует другие учетные данные для других сетевых подключений.
Для локальных соединений возвращаемый токен является клоном текущего токена. Предоставленные вами учетные данные только используется для исходящих соединений. Когда вы пытаетесь установить такие подключения, учетные данные будут проверены на этом этапе, и вы можете ожидать сбоя.
Других решений пока нет …