【问题标题】:Windows LogonUser Function Works with Old Passwords?Windows LogonUser 功能适用于旧密码?
【发布时间】:2009-06-22 19:39:59
【问题描述】:

我正在使用 LogonUser 函数 (http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx) 对用户进行身份验证。但是我发现,如果用户更改了他们的密码(即从 Password1 到 Password2),那么两个密码都可以使用。但是我希望它只能使用当前密码。我需要设置什么才能让它像那样工作吗?

我正在使用以下代码sn-p:

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。

谢谢, -皮特

【问题讨论】:

    标签: winapi authentication winlogon


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      编译时错误可能是因为你没有

      #define _WIN32_WINNT 0x0500
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 2020-02-23
        • 2020-12-31
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        相关资源
        最近更新 更多