WinNT始终将本地用户验证为True(NativeObject永远不会出错)

时间:2012-02-01 01:04:07

标签: c# active-directory directoryentry

我已经读过以下代码是针对WinNT对用户进行身份验证的方法。我一直在尝试在本地计算机上验证用户身份。出于某种原因,root.NativeObject永远不会抛出异常,无论我的本地用户的密码或用户名是否正确。知道可能是什么问题吗?

try
{
  using (var root = new DirectoryEntry("WinNT://" + _root, domainAndUsername, _password))
  {
     var root = root.NativeObject;
  }
}
catch
{
  return false;
}

1 个答案:

答案 0 :(得分:0)

如果您想针对Active-Directory进行身份验证(如您的代码所指),您可以测试:

try
{
  using (var root = new DirectoryEntry("LDAP://societe.fr/dc=societe,dc=fr", domainAndUsername, _password))
  {
     var root = root.NativeObject;
  }
}
catch
{
  return false;
}

您可以使用WinNT在计算机上添加本地用户(SAM),如下所示,但在这种情况下,您以管理员身份登录此计算机。

DirectoryEntry deComputer = new DirectoryEntry("WinNT://JPBASUSF1,computer");
DirectoryEntry deUser = deComputer.Children.Add("JPB", "user");
deUser.Invoke("SetPassword", new object[] { "test.2011" }); 
deUser.Properties["Description"].Add("user $userName");
deUser.Properties["userflags"].Add(512);
deUser.Properties["passwordExpired"].Add(1);
deUser.Properties["LoginScript"].Add("start.cmd");
deUser.CommitChanges();