Windowsのレジストリキーについてのお話。
Windowsの設定値などをレジストリキーから調べる場合に、
キーによってはユーザアカウントごとに独立した設定となっている場合があり、
そのユーザアカウントの数だけキーが複数ある場合があります。
特定のユーザアカウントのレジストリキーを調べようとしたときに困ることなのですが、
レジストリ内ではユーザアカウントはSIDという個別のIDで表示され、
そのSID自体は数値の羅列のため、どのユーザアカウントなのか?
というのが一目でわからない仕様になってます。
要はそのSIDと実際のユーザアカウント名の紐づけがわかれば
どのユーザのレジストリキーなのかがわかるので、
その紐づきの情報を調べてみました。
SIDの例
先ず実際のSIDですが、このような数列で記述されます。
例) S-1-5-21-3799544983-2651198241-1005135883-1001
上記の値がどのドメインのどのコンピュータのユーザアカウントなのか、
というところまで示す個別のIDになるとのことで
このIDが一致することは基本的に無く、
また、ユーザアカウントを作り直しても一致するものではないようです。
SIDのアカウント情報のレジストリキー
さてSIDがどのユーザアカウントと紐づいているかどうかを見るには、
Usersのフォルダのどこを指定しているかを確認するとわかります。
具体的には、下記のレジストリキーを見てもらえばわかります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\[sid]
上記レジストリ内のProfileImagePathの値を確認すると、
C:\Users\[ユーザ名]
という形で値が入力されています。
この[ユーザ名]部分が実際のユーザアカウントと
紐づく部分となるわけですね。
また、Windows XP, Vista, 7と共通で同一の場所に
レジストリキーが格納されてることを確認しました。
XPだと、Document and Settingsのパスになります。
実例
ユーザごとの設定は、
HKEY_USERS\[sid]
の中に格納されます。
例えばInternet Explorerのユーザアカウントごとの設定値は、
HKEY_USERS\[sid]\Software\Microsoft\Windows\CurrentVersion\Internet Settings
の中にそれぞれアカウントの数だけ格納される形になります。
総括
以前は、仕事上200台とか300台のPCを触ったりしたことがあったので、
この辺はもしかすると同じような管理者には参考になるかな、
と思って今回この話をしてみました。
1台のPCで複数ユーザのアカウントがあるようなものの場合、
ユーザごとの設定を追おうとすると結構大変なことが多いので
こうしたレジストリ値から設定を探してくることもよくやりました。
例えば特定の設定値がどこかのユーザアカウントに
設定されていることはわかるものの、
実際どのユーザアカウントに設定されているのかを調べる時など…
このSIDの紐づき方を覚えておけば、
苦労せずに設定が追えることがあるやもしれません。