4

我将是第一个承认这是削减和过去编程的人。我以前从未看过AD,真的不明白。我想这是我下一个研究...

无论如何,这是一些测试代码,它应该显示到期日期——可以是可读的,也可以是刻度——没关系。(这是一个 Web 表单,在开发网络服务器上运行。)

我得到的是:“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 );
4

3 回答 3

6

Dave Cluderay 推荐的文章是个好主意。需要注意的一件重要事情是,如果将过期设置为从不,那么您获得的日期可能没有意义。

根据 MS 文档,来自 ADSI 调用的 IADsLargeInteger 表示自 1601 年 1 月 1 日(UTC)以来的 100 纳秒间隔数,“0 或 0x7FFFFFFFFFFFFFFF (9223372036854775807) 的值表示该帐户永不过期”。

于 2009-01-14T15:29:16.917 回答
5

这是因为属性值是使用 ADSI IADsLargeInteger COM 接口表示的,需要转换为 .NET 日期。虽然我还没有尝试过,但是有一个示例显示了这里的方法: http ://www.simple-talk.com/dotnet/.net-framework/building-active-directory-wrappers-in-.net/

于 2009-01-13T22:55:42.133 回答
-1

有了这个,你可以获得真正的价值

Microsoft.VisualBasic.Information.TypeName(item);
于 2010-10-13T14:59:11.940 回答