0

我使用以下代码通过我的 winform 应用程序的 Windows 身份验证来验证用户。这适用于 windows XP,但是当用户使用 windows 2000 时,它说用户 ID 或密码有效。

如何在 Windows 2000 中执行此操作。此外,如何检测用户使用的是 Windows Xp 还是 Windows 2000。

        [System.Runtime.InteropServices.DllImport("advapi32.dll")]
    public static extern bool LogonUser(string userName, string domainName, string password, int LogonType, int LogonProvider, ref IntPtr phToken);

    public bool IsValidateCredentials(string userName, string password, string domain)
    {
        IntPtr tokenHandler = IntPtr.Zero;
        bool isValid = LogonUser(userName, domain, password, 2, 0, ref tokenHandler);
        return isValid;
    }

谢谢

4

1 回答 1

0

文档中LogonUser所述:

Windows 2000:如果您需要验证凭据,请使用 SSPI API。有关使用 SSPI API 的信息,请参阅如何在 Microsoft 操作系统上验证用户凭据。如果您需要使用返回的访问令牌模拟用户并访问资源,请使用LogonUseror函数。LogonUserEx

要检查您正在运行的 Windows 版本,请检查Environment.OSVersion.Version.

Windows 2000 是 5.0;XP是5.2。

此外,您需要通过调用来关闭句柄CloseHandle

于 2010-05-26T14:07:12.943 回答