1

我正在使用 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。

谢谢,-皮特

4

2 回答 2

2

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

于 2009-06-23T14:09:38.423 回答
1

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

#define _WIN32_WINNT 0x0500

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

为什么 LogonUser 可以同时使用新密码和旧密码,但我无法理解。但是,由于您想要的是根据 MSDN 对用户进行身份验证(而不是模拟他们),因此使用SSPI API更合适(是推荐的方式)。

于 2009-06-22T21:42:53.193 回答