ネットワーククライアントの特定ユーザーレジストリキーを操作する
REGコマンドはコンソールからネットワークを介してクライアントのレジストリキーの値を操作する事が可能ですが、HKEY_LOCAL_MACHINEとHKEY_USERS以外は参照できません。
これはREGコマンドがログインしているユーザーを認識しない仕様であるためですが、クライアントの管理をする上では、少々不便です。
そこで、クライアントにログインしているユーザーレジストリをリモートで操作する方法について、知識を共有します。
注意点
Windows Vista、Windows7、Windows Server 2008ではRemote Registryサービスが起動していない場合があります。
Remote Registryサービスが起動していないと、リモートでのレジストリ操作ができないため、必要に応じて起動してください。
以下の例はクライアントpcnameのRemote Registryサービスを起動します。
SC \\pcname start RemoteRegistry
上と同じ条件でRemote Registryサービスを停止する場合は、以下のようにします。
SC \\pcname stop RemoteRegistry
ユーザー情報の参照先
レジストリでは、そのパソコンにおいてユニークな名前で各ログインユーザー情報を保存しています。
これらの情報はルートキーのHKEY_USERS以下に保存されており、現在ログインしているユーザーレジストリであるルートキーHKEY_CURRENT_USERも含みます。
クライアントに接続する
クライアントのレジストリを参照するには、クライアントへの接続が必要な場合があります。
接続が必要な場合はUSE NETコマンドを使用してください。
今回は説明を割愛します。
ログインユーザー名を調べる
まず、HKEY_USERS以下にあるレジストリキーを全て取得します。
以下の例は、クライアントpcnameのHKEY_USERS以下のレジストリキーを全て列挙するコマンドです。
REG QUERY \\pcname\HKEY_USERS
結果の例
HKEY_USERS\.DEFAULT HKEY_USERS\S-000 HKEY_USERS\S-000_Classes HKEY_USERS\S-111 HKEY_USERS\S-111_Classes HKEY_USERS\S-222
レジストリではログインユーザーをユニークなキーで管理しており、それは人間にとっては分かりづらい値になっています。
ここからログインユーザー名を知る事は出来ないため、HKEY_USERSの各ユーザーレジストリルートから、目的のユーザーレジストリを探し出す必要があります。
以下の例は、クライアントpcnameのHKEY_USERSにあるS-000レジストリキーのログインユーザー名を取得します。
REG QUERY \\pcname\HKEY_USERS\S-000\Software\Microsoft\Windows\CurrentVersion\Explorer /v "Logon User Name"
結果の例
下の例ではuserがレジストリを使用しているログインユーザー名となります。
Logon User Name REG_SZ user
レジストリを参照と操作
REGコマンドでクライアントのレジストリキーを操作する事が可能ですが、以下の点に注意が必要です。
レジストリのキーや値は操作できますが、インポート、エクスポート、リストア、ハイブファイルのロードとアンロードができません。
これらの操作はクライアントマシンのローカル上で実行する必要があるためです。
クライアントから切断する
クライアントにNET USEコマンドで接続した場合は、net useの/deleteオプションを使用して切断します。
立つ鳥跡を濁さずです。
このノウハウの使い道
セキュリティポリシーの適用、資産管理などで役立ちます。
数百台のクライアントコンピュータを有し、ActiveDirectory等による一元管理の適用が困難なローカルユーザーを持つネットワークでは重宝します。