Quantcast
Channel: わんくま同盟
Viewing all articles
Browse latest Browse all 994

ドメインユーザのプロパティ画面の項目と属性の対応(アカウントタブ)

$
0
0

ドメインユーザのプロパティ画面の「アカウント」タブで設定できる項目に対応する属性を調べてみました。

※クリックすると新しいウィンドウで拡大図が表示されます。

Account

ログオン時間

LogonHours

ログオン先

LogonWorkstations

項目属性
ユーザー ログオン名userPrincipalName
ユーザー ログオン名(Windows 2000 以前)sAMAccountName
ログオン時間logonHours
ログオン先userWorkstations
アカウント オプションuserAccountControl
アカウントの期限accountExpires

 

ユーザー ログオン名の属性「userPrincipalName」はユーザー ログオン名のテキストボックスとコンボボックスの値を連結した値で、メールアドレスと同じ形式になります。

この名前(UPN)でログオンすることもできます。その場合、ログオン名にドメイン名が含まれるので、ログオン先のドメインを選択するコンボボックスは無効になります。

ログオン時間の属性「logonHours」の値は日曜日~土曜日までを1時間区切りで、1時間1ビットでログオンできるかどうかを(24×7=168ビット=)21バイトで表してるようです。

日本時間が+9時間だからか日曜9:00始まりのようで、日曜9:00からの24時間分が頭3バイトのようです。

日曜9:00からの24時間だけをログオン拒否にした状態だと次のようになりました。(BitConverter.ToString メソッドの結果)

00-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF

ログオン許可の時間を変えてやってみました。

09:00~10:00  01-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  01=00000001
09:00~11:00  03-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  03=00000011
09:00~12:00  07-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  07=00000111
09:00~13:00  0F-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  0F=00001111
09:00~14:00  1F-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  1F=00011111
09:00~15:00  3F-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  3F=00111111
09:00~16:00  7F-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  7F=01111111
09:00~17:00  FF-00-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  FF=11111111
09:00~18:00  FF-01-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF
09:00~02:00  FF-FF-01-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF
10:00~18:00  FE-01-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  FE=11111110
11:00~18:00  FC-01-00-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF-FF  FC=11111100

どうやら先頭の1バイトが日曜9:00~17:00までの8時間を表していて、1ビット目が9:00~10:00の1時間、2ビット目が10:00~11:00の1時間を表しているようです。

 

アカウントのロック解除とアカウント オプションの各チェックボックスの値は、属性「userAccountControl」の値に各チェックボックスの項目を表す値(ADS_USER_FLAG 列挙体の値)の論理積で求めます。

項目ADS_USER_FLAG 列挙値IADsUser プロパティ
アカウントがロックされているかどうかADS_UF_LOCKOUTIsAccountLocked
ユーザーは次回ログオン時にパスワードの変更が必要--
ユーザーはパスワードを変更できないADS_UF_PASSWD_CANT_CHANGE-
パスワードを無期限にするADS_UF_DONT_EXPIRE_PASSWD-
暗号化を元に戻せる状態でパスワードを保存するADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED-
アカウントは無効ADS_UF_ACCOUNTDISABLEAccountDisabled
対話型ログオンにはスマート カードが必要ADS_UF_SMARTCARD_REQUIRED-
アカウントは重要なので委任できないADS_UF_NOT_DELEGATED-
このアカウントに DES 暗号化を使うADS_UF_USE_DES_KEY_ONLY-
Kerberos 事前認証を必要としないADS_UF_DONT_REQUIRE_PREAUTH-

「ユーザーは次回ログオン時にパスワードの変更が必要」については、属性「pwdLastSet」の値を LargeInteger 型または IADsLargeInteger 型にキャストして、その値が 0(HighPart プロパティと LowPart プロパティの値がどっちも 0)かどうかで判断します。

つまりこのチェックボックスの Checked プロパティの値 = 属性「pwdLastSet」の値が 0 かどうか ということになります。

チェックを入れたい場合は属性「pwdLastSet」の値に 0 をセットします。チェックをはずしたい場合は -1 をセットします。

ちなみに変更を保存するには DirectoryEntry.CommitChanges メソッドか IADs.SetInfo メソッドを呼び出します。

 

「ユーザーはパスワードを変更できない」については取得できないようです。取得するにはなんか色々やらないといけないみたいなので、判ったらその時また書きます。

IADsUser のプロパティがある項目はこっちを使う方が楽かなぁと思います。


Viewing all articles
Browse latest Browse all 994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>