pwdLastSet不会在我的代码中返回到服务器B上。在服务器B上,用户是通过“猜测”通过LDAP 。当我在AD Manger中检查用户时,我可以看到该字段,但是当我尝试通过代码获取服务器B上的pwdLastSet时,它不起作用。但是,它全部在服务器A上运行,我通过AD创建用户。pwdLastSet显示在一个服务器A上,但不在服务器B上,即使它在那里
我也尝试过通过UserPrincipal对象的“LastPasswordSet”。
private static DateTime DateTest(string userName)
{
userName = userName.Trim();
DateTime hacked;
using (DirectorySearcher ds = new DirectorySearcher())
{
ds.SearchScope = SearchScope.Subtree;
ds.PropertiesToLoad.Add(“distinguishedName”);
ds.PropertiesToLoad.Add(“pwdLastSet”);
ds.PageSize = 1;
ds.ServerPageTimeLimit = TimeSpan.FromSeconds(2);
ds.Filter = string.Format(“(&(objectCategory=user)(sAMAccountName={0}))”, userName);
SearchResult sr = ds.FindOne();
//hacked = DateTime.FromFileTime((long)sr.Properties[“pwdLastSet”][0]);
IDictionaryEnumerator e = sr.Properties.GetEnumerator();
while (e.MoveNext())
{
//if (typeof(ResultPropertyCollection) == e.Key.GetType())
//{
// foreach (var item in (ResultPropertyCollection)e.Key)
// {
// Console.WriteLine(e);
// }
//}
Console.Write(e.Key);
Console.Write(” : “);
foreach (var item in (ResultPropertyValueCollection)e.Value)
{
Console.WriteLine(item);
}
}
}
return DateTime.Now;
}
+0
pwdLastSet属性是否完全从SearchResult对象中丢失,或者是属性,但会出现null或作为默认日期时间? –
2013-03-14 19:09:33
+0
另一件要检查的问题是,如果您有主域控制器和辅助域控制器,那么您的代码是否连接到尚未将pwdLastSet值复制到的域控制器。 DirectorySearch构造函数接受一个路径参数,该参数将允许您指定它连接的域控制器。 –
2013-03-14 19:24:33
+0
它根本没有显示出来,我会检查以确保它是主域控制器。 –
2013-03-14 19:30:19