2012-07-06 63 views
2

我试图查询AD来检索用户数据。GetDirectoryEntry不返回所有属性

查询工作正常,但在枚举通过GetDirectoryEntry返回的属性 时,我无法看到在Active Directory资源管理器中看到的所有属性。

代码片断如下:

offEntry = pResult.GetDirectoryEntry(); 
foreach (PropertyValueCollection o in offEntry.Properties) 
{ 
    Debug.Print(o.PropertyName + " = " + o.Value.ToString()); 
} 

我看到像“显示名”和“SAM帐户名”等属性,但不是属性我真正想要的,例如:“邮编”,“的StreetAddress”。

我已经尝试过寻找针对这个特定问题的解决方案,但已经走到死胡同。 我错过了什么?

问候 彼得

回答

1

您应该能够使用一个搜索类这样的。

DirectorySearcher search = new DirectorySearcher(entry); 
       search.Filter = "(sAMAccountName=" + userAccount + ")"; 
       search.PropertiesToLoad.Add("mail"); 
       SearchResult result = search.FindOne(); 

然后通过线路负载所需的属性

  search.PropertiesToLoad.Add("mail"); 

然后在SearchResult,你将能够读取性能

+0

@peter给这个一展身手,HTTP://的TechNet .microsoft.com/en-us/sysinternals/bb963907如果您有权访问AD域,则应该可以使用它来查看AD中的所有属性。我已经看到了我可以访问的AD,并且我看不到这两个属性,所以除非它们在您的AD中,否则您将无法输出它们。 – Qpirate 2012-07-11 08:03:23