该应用程序(不是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;
}