C# LDAP查询操作属性

C# LDAP查询操作属性,c#,active-directory,ldap,C#,Active Directory,Ldap,我正在使用System.DirectoryServices库来查询LDAP目录。我看到所有的文本属性都很好,但我需要检索一些操作属性,如pwdChangedTime。尝试获取这些属性时,我获取的对象未设置为对象类型错误的实例 using (DirectorySearcher search = new DirectorySearcher(dirCon, ldapSearchFilter.Replace("{cn}", cn),

我正在使用
System.DirectoryServices
库来查询LDAP目录。我看到所有的文本属性都很好,但我需要检索一些操作属性,如
pwdChangedTime
。尝试获取这些属性时,我获取的对象未设置为对象类型错误的实例

using (DirectorySearcher search = new DirectorySearcher(dirCon,
                    ldapSearchFilter.Replace("{cn}", cn),
                    new string[] {"*","+"},
                    SearchScope.Subtree))
{
   foreach (SearchResult sr in search.FindAll())
   {
       la = new LdapAccount();
       la.pswdUpdateTime = DateTime.ParseExact(sr.GetDirectoryEntry().Properties["pwdchangedtime"].ToString(), dateFormat, null);
...
}

我看到了所有的文本属性,但它找不到任何操作属性。

在本地进行一些测试时,我在
搜索结果上看到了属性
pwdlastset
,因此我想知道属性名称是否与您期望的不同

result.Properties["pwdlastset"]

SearchResult Properties集合中还有一个可能有用的
PropertyNames
集合。另外,当我之前查询AD时,我没有调用
GetDirectoryEntry()
,而是直接从搜索结果中枚举属性。

在本地执行一些测试时,我在
搜索结果上看到属性
pwdlastset
,因此我想知道属性名称是否不是您期望的名称

result.Properties["pwdlastset"]

SearchResult Properties集合中还有一个可能有用的
PropertyNames
集合。另外,当我之前查询AD时,我没有调用
GetDirectoryEntry()
,而是直接从搜索结果中枚举属性。

感谢您的回复,令人困惑的是,当我查看PropertyNames集合(以及底层哈希表)时我看到“pwdchangedtime”的条目,其中包含正确的日期时间值。我不知道为什么我不能从收藏中提取这个……这很有趣。因此,
sr.GetDirectoryEntry().Properties[“pwdchangedtime”]。ToString()是引发异常的部分吗?或者是其他的线路。我认为,如果您可以获得对DirectoryEntry的引用,并在visual studio中查看底层属性,那么您应该能够在代码中执行相同的操作……正确,我在那里得到一个空指针。它很柔软。如果属性没有返回,我会理解空指针,但它是…抱歉,我不确定接下来会发生什么。当我用.ToString()运行这段代码时,我得到了“System.DirectoryServices.PropertyValueCollection”和一些同事的对话,他们给我指出了这个有效的语法:DateTime test=(DateTime)sr.Properties[“pwdchangedtime”][0];感谢您的回复,令人困惑的是,当我查看PropertyNames集合(以及底层哈希表)时,我看到一个“pwdchangedtime”条目,其中包含正确的dateTime值。我不知道为什么我不能从收藏中提取这个……这很有趣。因此,
sr.GetDirectoryEntry().Properties[“pwdchangedtime”]。ToString()是引发异常的部分吗?或者是其他的线路。我认为,如果您可以获得对DirectoryEntry的引用,并在visual studio中查看底层属性,那么您应该能够在代码中执行相同的操作……正确,我在那里得到一个空指针。它很柔软。如果属性没有返回,我会理解空指针,但它是…抱歉,我不确定接下来会发生什么。当我用.ToString()运行这段代码时,我得到了“System.DirectoryServices.PropertyValueCollection”和一些同事的对话,他们给我指出了这个有效的语法:DateTime test=(DateTime)sr.Properties[“pwdchangedtime”][0]@marc_的LDAP实际上对大小写不敏感,尤其是在属性名方面。@marc_的LDAP实际上对大小写不敏感,尤其是在属性名方面。