どうも元大雑把SEのヤスユキです。
今回はレジストリの変更をコマンドで行う方法を紹介します。手動で変更する場合は、レジストリエディター(regedit.exe)を起動して変更しますが、レジストリは無数に存在します。
レジストリを変更するときは、変更するべきレジストリが分かった上で変更することがほとんどですので、コマンドを作成した上で、実行したほうがミスもなく安全に変更することができます。
本記事は 具体的に レジストリを変更するためのコマンドを紹介しますが、レジストリの構造を理解したいという方向けに、レジストリについて別記事で紹介していますので、以下の記事を参考にしてください。
それでは、ここからレジストリの変更をコマンドで実行する方法について紹介していきます。
実行時の注意
レジストリをコマンドで変更する際は、コマンドにより期待通りの設定がされることを確認した上で実行してください。確認せずに実行することで意図しないレジストリが追加、削除されることになります。
最悪の場合、パソコンが起動しなくなる恐れがあります。(本当に最悪の場合です。経験上ほとんど起きることはありません。)
レジストリ変更のコマンドは、ログオンしているユーザーの設定情報を格納している「HKEY_CURRENT_USER(HKCU)」配下のキーであれば、管理者権限は不要ですが、「HKEY_LOCAL_MACHINE(HKLM)」配下のレジストリを変更するときは、管理者権限でないと実行したときに変更する権限がないため、エラーが発生します。
基本的にHKLM配下は管理者権限で実行、HKCU配下はコマンドプロンプト(cmd)、もしくはバッチファイルなどを通常実行(ダブルクリックで実行)してください。
HKLMは問答無用で管理者権限で実行で問題ありませんが、HKCU配下はコマンドを実行しているユーザーで実行する必要があるため、注意が必要です。
※HKCUの中でも「HKEY_CURRENT_USER\SOFTWARE\Policies」配下は管理者権限が必要となります。
コマンドの紹介
Windowsにはレジストリ操作用のコマンドとして、reg コマンドがあります。
reg コマンドを使用して、レジストリを操作することができます。ここでは、reg コマンドでよく使用されるコマンドである。以下の3つを紹介します。
- reg query
- reg add
- reg delete
reg の後に続く英単語で何となく意味は通じるかもしれませんが、それぞれのコマンドを紹介していきます。
reg query コマンド
reg query コマンドはレジストリの値やレジストリーに連なるサブキーを読み取ることができます。reg query コマンドを使用することで特定のレジストリの値を調べるときにわざわざレジストリエディターから特定のレジストリーを探して、値を確認する手間を省くことができます。
reg add コマンド
reg add コマンドは、レジストリの値を変更(上書き)することや追加(新規作成)ができます。レジストリエディターで特定のレジストリを探して、値を変更したり、新規作成する手間を省くことができます。
reg delete コマンド
reg delete コマンドは、レジストリを削除することができます。レジストリーエディターで特定のレジストリを探して、レジストリを削除する手間を省くことができます。
実際にコマンドを実行してみる
今回確認対象とした設定は、「Windows で通常使うプリンターを管理する」という設定です。この設定は最後に使用したプリンターを既定のプリンターに変更してしまう設定です。
1つのプリンターしか使用しない場合は特に問題ありませんが、複数のプリンターを使う可能性がある場合は煩わしい設定になります。
確認対象の設定とレジストリ
設定箇所は、[設定] – [デバイス] – [プリンターとスキャナー] – [Windows で通常使うプリンターを管理する]です。実際の設定画面は以下になります。
上の設定のレジストリパスは以下になります。
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows・・・①
- 名前:LegacyDefaultPrinterMode・・・②
- 種類:REG_DWORD・・・③
- データ:0x00000000 (0) ※0と同値・・・④
実際のレジストリエディターで確認した画面は以下になります。
設定を変更(オフ)した後にレジストリを確認すると、データが「0」から「1」に変更になります。
逆にレジストリエディターからデータを「1」から「0」に変更すると設定画面も連動して、設定が変更(オン)になります。
このように設定とレジストリが紐づいていることを確認することができます。ここで確認対象としたレジストリに対してコマンドを実行していきます。
reg query コマンドの実行
[Windows で通常使うプリンターを管理する]がオンのとき以下のパスにあるレジストリのデータは1になります。
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows・・・①
- 名前:LegacyDefaultPrinterMode・・・②
- 種類:REG_DWORD・・・③
- データ:0x00000001 (1) ※1と同値・・・④
上に記載したキーの名前である「 LegacyDefaultPrinterMode」の内容を取得するコマンドを作成します。
コマンドは、
・reg query “①” /v “②”
で作成できます。
※①と②の前後の「”」は必ず必要ではありません。
①、②にスペースが含まれるときに正しく動作しないため、
「”」をつけることをオススメします。
実際のコマンドは、
・reg query “HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows” /v “LegacyDefaultPrinterMode”
になります。
上記コマンドを実行してみると正しくデータが取れていることを確認できます。補足ですが、コマンドの「HKEY_CURRENT_USER」の部分は「HKCU」に変更しても動作します。
reg add コマンドの実行
[Windows で通常使うプリンターを管理する]がオンの状態から、コマンドでオフにする場合は、reg add コマンドを実行します。以下のデータを0にするコマンドを作成します。
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows・・・①
- 名前:LegacyDefaultPrinterMode・・・②
- 種類:REG_DWORD・・・③
- データ:0x00000001 (0) ※0と同値・・・④
コマンドは、
・reg add “①” /v “②” /t “③” /d “④” (/f)
で作成できます。
※①、②、③、④の前後の「”」は必ず必要ではありません。
①、②、③、④の前後にスペースが含まれるときに
正しく動作しないため、「”」をつけることをオススメします。
※(/f) は、付けることでユーザーの同意を求めず強制的に変更することができます。
実際のコマンドは、
・reg add “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows” /v LegacyDefaultPrinterMode /t “REG_DWORD” /d “0” /f
になります。
データを確認すると「0」から「1」に変更していることがわかります。また紐づいている設定に関しても、設定が「オン」から「オフ」に変更になっていることを確認できます。
reg add コマンドの「HKEY_CURRENT_USER」の部分に関しても「HKCU」に変更して動作します。
reg delete コマンドの実行
reg delete コマンドで実際のレジストリを削除するのは少々危険ですので、動作確認のために以下のコマンドで、今まで確認していたレジストリ(「Windows で通常使うプリンターを管理する」と紐づくレジストリ)付近にゴミを作成します。
※重要
追加したために起動しなくなることはないですが、本当にゴミですので追加したら、必ず忘れないようにすぐ削除してください。
・reg add “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows” /v yasuyuki /t “REG_SZ” /d “ヤスユキは最高です” /f
上記コマンドを実行すると、以下のようにレジストリ(ゴミ)が作成されます。
追加したレジストリ(ゴミ)を削除するには、以下のレジストリを削除する必要があります。
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows・・・①
- 名前:yasuyuki・・・②
- 種類:REG_SZ・・・③
- データ:ヤスユキは最高です・・・④
レジストリを削除するときは、reg delete コマンドを実行します。
コマンドは、
・reg delete “①” /v “②” (/f)
で作成できます。
※(/f) は、付けることでユーザーの同意を求めず強制的に変更することができます。
実際のコマンドは、
・reg delete “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows” /v “yasuyuki” /f
になります。
レジストリ(ゴミ)を追加した方は、必ず reg delete コマンドを実行した上で、レジストリエディターでも削除されていることを確認してください。
まとめ
Windowsの設定項目とレジストリは紐づいている。
reg query コマンドは、レジストリを確認するためのコマンド
reg add コマンドは、レジストリを変更(上書き)、追加(新規作成)するコマンド
reg delete コマンドは、レジストリを削除するコマンド
以上がこの記事のまとめになります。
ここまでの記事で行ったことを実際やってみることで、Windowsの設定とレジストリが紐づいていることを体験できると思います。
一度ゆっくり時間を作ってパソコンを操作しながらこの記事を見ていただけたら理解も深まると思うので試していただけたら嬉しいです。
最後までお読みいただきましてありがとうございます。
コメント