Windows身份验证失败,没有以管理员身份运行

时间:2019-02-12 13:50:00

标签: c# .net windows authentication active-directory

该应用程序(不是ASP.NET)使用以下代码对Windows进行身份验证。

按正常过程运行该应用程序,它无法通过本地计算机或域进行身份验证。 “句柄无效”是本地计算机的例外。

以管理员身份运行它,它对于域和计算机均正常运行。有想法吗?

这两种方法确实都能正常工作,因此安全设置中的策略更改并非没有可能。

private bool VerifyWindowsPassword()
{
    bool ret = false;
    string username = this.usernameTextBox.Text;
    string unsecure = ConvertToUNSecureString(this.Password);

    try
    {
        var context = new PrincipalContext(ContextType.Domain);

        try
        {
            ret = context.ValidateCredentials(username, unsecure);
            if (ret)
            {
                return true;
            }
        }
        catch
        {
        }

        context = new PrincipalContext(ContextType.Machine);
        ret = context.ValidateCredentials(username, unsecure);
        if (ret)
        {
            return true;
        }

        if (!ret)
        {
            MessageBox.Show(
                "Windows User/Password could not be authenticated.",
                "Settings",
                MessageBoxButtons.OK,
                MessageBoxIcon.Error);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(
               string.Format("Windows User/Password could not be authenticated. {0}", ex.Message),
               "Settings",
               MessageBoxButtons.OK,
               MessageBoxIcon.Error);
    }

    return ret;
}

0 个答案:

没有答案