我将是第一个承认这是切入和过去编程的人.我以前从未看过AD,真的不明白.我想这是我的下一个研究......
无论如何,这是一些测试代码,它应该显示有效期 - 无论是可读的还是刻度的 - 都无关紧要.(这是一个Web表单,它在dev webserver上运行.)
我得到的是:"System .__ ComObject"
DirectorySearcher searcher = new DirectorySearcher(); searcher.Filter = String.Format( "(SAMAccountName={0})", "TestA33" ); searcher.PropertiesToLoad.Add( "cn" ); SearchResult result = searcher.FindOne(); DirectoryEntry uEntry = result.GetDirectoryEntry(); String expiry = uEntry.Properties["accountExpires"].Value.ToString(); Response.Write( expiry );
barneytron.. 6
Dave Cluderay推荐的文章是个好主意.需要注意的一件重要事情是,如果到期时间设置为永不过期,那么您获得的日期可能没有意义.
根据MS文档,ADSI调用中的IADsLargeInteger表示自1601年1月1日(UTC)以来100纳秒间隔的数量,"0或0x7FFFFFFFFFFFFFFF(9223372036854775807)的值表示该帐户永不过期".
Dave Cluderay推荐的文章是个好主意.需要注意的一件重要事情是,如果到期时间设置为永不过期,那么您获得的日期可能没有意义.
根据MS文档,ADSI调用中的IADsLargeInteger表示自1601年1月1日(UTC)以来100纳秒间隔的数量,"0或0x7FFFFFFFFFFFFFFF(9223372036854775807)的值表示该帐户永不过期".
这是因为属性值使用ADSI IADsLargeInteger COM接口表示,需要转换为.NET日期.虽然我没有尝试过,但有一个示例显示如何:http: //www.simple-talk.com/dotnet/.net-framework/building-active-directory-wrappers-in-.net/