pwdLastSet显示在一台服务器A上但不在服务器B上,即使它在那里

时间:2013-03-14 17:59:13

标签: .net active-directory

pwdLastSet未在我的服务器B下面的代码中返回。在服务器B上,用户是由“Crowd”创建的,我猜是通过LDAP。当我在AD Manger中检查用户时,我可以看到该字段,但是当我尝试通过代码在服务器B上获取pwdLastSet时,它不起作用。但是它全部适用于我通过AD创建用户的服务器A.

我还通过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;
   }

1 个答案:

答案 0 :(得分:0)

尽管我的登录具有企业/域管理员组成员身份,但在执行时仍然无效。

然而,当我右键单击控制台应用程序并以管理员身份运行时,它就像一个魅力。加尔!