4

私はこれがカットされ、過去のプログラミングであることを最初に認めます。私はこれまで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 );
4

3 に答える 3

6

Dave Cluderay が推奨した記事は良い考えです。注意すべき重要な点の 1 つは、有効期限が無期限に設定されている場合、取得する日付が意味をなさない可能性があることです。

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 に答える