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

有帮助吗?

解决方案

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

#define _WIN32_WINNT 0x0500

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

为什么LogonUser可以同时使用新密码和旧密码。但是,根据MSDN,你想要的是对用户进行身份验证(而不是模仿它们),使用 SSPI API 这里的推荐的方式)。

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top