Windows LogonUser Функция работает со старыми паролями? - PullRequest
1 голос
/ 22 июня 2009

Я использую функцию LogonUser (http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx) для проверки подлинности пользователей. Однако я обнаружил, что если пользователь изменяет свой пароль (т.е. с Password1 на Password2), тогда оба пароля будут работать. Однако мне бы хотелось, чтобы что только текущий пароль может быть использован. Есть ли что-то, что мне нужно установить, чтобы заставить это работать так?

Я использую следующий фрагмент кода:

LogonUser(nt_id, NULL, nt_password, LOGON32_LOGON_NETWORK, 3, &hToken );

nt_id входит в формат USER@USERDOMAIN.SOMETHING.COM

и у меня есть 3 вместо LOGON32_PROVIDER_WINNT50, потому что я получил бы ошибку компиляции, сообщающую необъявленный идентификатор для LOGON32_PROVIDER_WINNT50 (это может быть симптомом?), Но я знаю, что он определен как 3.

Спасибо, -Pete

Ответы [ 2 ]

2 голосов
/ 23 июня 2009

Это настройка сети. По умолчанию пароли Windows остаются действительными в течение одного часа после их изменения. Ваш сетевой администратор может изменить это при необходимости. (Обратите внимание, что это не влияет на интерактивный вход в систему, но влияет на все программные методы.)

1 голос
/ 23 июня 2009

Ошибка времени компиляции, вероятно, потому что у вас нет

#define _WIN32_WINNT 0x0500

перед включением windows.h или добавлением его в качестве параметра времени компиляции (-D_WIN32_WINNT = 0x0500).

Почему LogonUser будет работать как с новым, так и со старым паролем, я не знаю. Но поскольку вы хотите аутентифицировать пользователей (а не выдавать себя за них) в соответствии с MSDN, более целесообразно использовать SSPI API ( здесь рекомендуемый способ).

...