ActiveDirectory アカウントの有効期限が無期限のものを判定する

http://gallery.technet.microsoft.com/scriptcenter/734e8f2a-075b-4946-8c74-dad631a5b390/ 「Scripting Guy さん、ユーザー アカウントが無期限に設定されて​いるすべてのユーザーの一覧を取​得する方法はありますか」を参考にC#で出力するプログラムを作成していた。

しかし、アカウント無期限に設定されているものには2種類あり、AccountExpirationDate プロパティにアクセスした結果 “1970/1/1” の他に “1601/1/1 9:00:00”(JST) が返ってくる。

アカウント期限の実体は AccountExpirationDate ではなく AccountExpires 属性であり、その仕様については http://msdn.microsoft.com/en-us/library/windows/desktop/ms675098.aspx で見ることができる。

値が 0 または 0x7FFFFFFFFFFFFFFF (9223372036854775807) であると無期限。前者が“1601/1/1 9:00:00”(JST) で後者が “1970/1/1”ある。

この前者の分がおそらくVBScriptで Err.Number = -2147467259 になっていたが、C#化することによりエラーにならなくなったのであろう。PowerShell で検索する時にもおそらくC#同様の状況になりそう。

参考: http://directoryprogramming.net/forums/thread/3846.aspx Setting “Account does not expire” in AD?

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。