我将是第一个承认这是过时的编程。我以前从来没有看过AD,真的不明白。我想那是我的下一个研究......
无论如何,这是一些测试代码,它应该显示到期日期——要么是可读的,要么是刻度线——这无关紧要。 (这是一个 Web 表单,在开发 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 );
最佳答案
这是因为属性值是使用 ADSI IADsLargeInteger COM 接口(interface)表示的,需要转换为 .NET 日期。
虽然我还没有尝试过,但有一个示例显示了这里的方法:
http://www.simple-talk.com/dotnet/.net-framework/building-active-directory-wrappers-in-.net/