Windows LogonUser功能与旧密码一起使用?

时间:2009-06-22 19:40:00

标签: winapi authentication winlogon

我正在使用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 个答案:

答案 0 :(得分:2)

这是一个网络设置。默认情况下,Windows密码在更改后一小时内仍然有效。如果需要,您的网络管理员可以更改此项(请注意,这不会影响交互式登录,但它确实会影响所有编程方法。)

答案 1 :(得分:1)

可能存在编译时错误,因为你没有

#define _WIN32_WINNT 0x0500

包含windows.h或将其添加为编译时设置(-D_WIN32_WINNT = 0x0500)。

为什么LogonUser可以同时使用新密码和旧密码。但是,根据MSDN,您想要的是对用户进行身份验证(而不是模仿他们),使用SSPI APIhere's建议的方式)更合适。