2011年12月15日木曜日

レジストリ HKCR ,HKCU ,HKLM の関係

間違って

……

いた…




HKEY_CURRENT_USER はログインユーザーの設定
HKEY_LOCAL_MACHINE はコンピューターの既定の設定

というのは理解していたのですが、いままで使い分けができていなかったです。

HKLMも使っていた理由として

  • Windowsの場合ほとんど個人ユーザーですので、どちらに設定しても大差がないと思っていました。
  • HKLMなら値を1つ加えれば良い手軽なものでも、HKCUにはそこまでのキーを作成しなくてはならないものが多く、手順やレジストリの使用量が増えてしまう。
  • ユーザーが元々どこまでカスタマイズしていたのか判らないので、元に戻す手順が書きにくい。
  • 参考にした世界中のサイトさんが、そう書いているので大して疑問に思わなかった。(ただし改めて調べてみますと、「それは間違いである」と、ちゃんと指摘しているサイトさんもありました)


HKLMは既定の設定ですので、なるべくそのままにしておいたほうが良いです。

値のデータの変更はHKCUに同じ値を作成すればできますし、HKLMのキーや値を無効にするには、Attributes 値 ,LegacyDisable 値 ,Blocked キー などでたいてい可能で、アクセス権の変更も必要ありません。


HKEY_CLASSES_ROOT は関連付けの設定

HKLM と HKCU のClassesキー と同じだと理解していましたが、正しくは、

HKLM\SOFTWARE\Classes と HKCU\Software\Classes をマージされたものが表示され、同じ項目がある場合はHKCUが優先されます。

逆にHKCRを変更した場合は、HKLM\SOFTWARE\Classesに格納され、HKCUに該当するキーが存在する場合はHKCU\Software\Classesに格納されます。

ということで
HKEY_CURRENT_USER\Software\Classes の編集だけで良かったです。


いましめを兼ねてページにまとめておきました。


それで、これまでの投稿をどうしようかと考えたのですが…
実際に効果があって間違っている訳ではないこと、そちらのが簡単で適している場合があること、「間違っていても知りませんよ~」と伏線が張ってあることw、だれも見ていないことを考慮してそのままにすることにしました。


あ、いつも来てくれる方、ありがとうございます!

まだ世に出ていないだろうカスタマイズを、たくさん用意してありますので、これからもちょくちょく見に来てやってください。