Windowsにおけるレジストリは、設定を記憶する「データベース」。Windowsの利用歴が長いユーザーなら、1回くらいはなんらか触ったことがあるだろう。
そのレジストリの操作では、「レジストリエディタ」が有名で、インターネットでの関連記事のほとんどがこれを使っている。しかし、レジストリにアクセスする方法は、レジストリエディタだけではない。
そもそもWindowsにおけるレジストリとは?
レジストリはWindows固有の機能だが、一般的には「キー、バリューストア」からなる。ただし、レジストリの場合、1つのキーに複数の「値」(バリュー)が存在できるため、値には名前がある。「値」だと理解しにくいこともあるのか、マイクロソフトのドキュメントなどでは「レジストリエントリ」と表記することもあるようだ。
レジストリエディタの左側のペインに表示されるのがキーであり、右側に表示されるのが「値」だ。「値」は、「名前」「種類」「データ」がある。「データ」と言わずに「値」とするのが素直なのだが、全体が「値」なので、これを「値」と呼ぶのも混乱の元。そこで「データ」になっているのだと思われる。
各キーには1つだけ名前のない値がある。ドキュメントなどでは「既定値」などと表記されるが、レジストリエディタでは「(既定)」などと表示される。これは名前のない文字列値で、標準ではデータは中身のないヌルストリングになっている。これを使うことで、キーと値で一組となる、従来のキーバリューストアと同じことが可能になる。
レジストリキーは、複数のルートキーから構成されている。ルートキーには、以下の表のようなものがあり、それぞれ役目がある。
レジストリにアクセスする方法はさまざま
レジストリにアクセスする方法は複数ある。1つはレジストリエディタだが、そのほかに「reg.exe」コマンドとPowerShellのコマンド、Windows Scripting Hostも使える。また、Visual BASICなどのプログラミング言語からもアクセスは可能だ。Windowsの.NET、.NET Frameworkにはレジストリを扱うオブジェクトが用意されているため、.NET/.NET Frameworkを扱える言語は、基本的にレジストリも扱えるようになっている。
とはいえ、ユーザーレベルで簡単にアクセスする方法としては、レジストリエディタを除けば、コマンドラインのreg.exeコマンドかPowerShellくらいだ。ウィンドウを開く手間を考えれば、どれも同じだが、コマンドラインで作業しているとき、ちょっとレジストリを確認したいといった場合には、reg.exeコマンドを使うのが簡単だろう。なお、レジストリキーには、アクセス制御が適用できるため、レジストリの書き換えには管理者権限が必要になる。
では、まずコマンドラインのreg.exeコマンド
キーや名前が判明しているレジストリエントリを表示するには、reg.exeコマンドが適している。reg.exeコマンドは、レジストリエディタで可能なことの大半が実行できる。また、キーをコピーしたり、特定のキーとそのサブキー、そして「値」をファイルに保存し、あとから書き戻せるほか、他のキーの下に読み込むといったことも可能だ。
ただ、reg.exeコマンドは、表示や検索することに比べると、キーや値の編集操作は面倒ではある。コマンドラインゆえに、タイプミスといったエラーが入り込む余地もある。筆者も、レジストリを書き換える場合には、他の方法を使うことが多い。レジストリエディタならキーをたどっていくため、タイプミスなどをしにくく、大きな勘違いをしない限り、間違ったキーで操作してしまうことはない。
reg.exeには、サブコマンドとオプション、パラメーターでレジストリにアクセスする。サブコマンドには、以下の表のようなものがある。まずは、「QUERY」サブコマンドだけ、使いこなせるようにしておけばいいだろう。
QUERYサブコマンドは、簡単に言えば、ルートキーから始まる完全キーを指定して、そこにある値を表示させるものだ。オプション「/s」で再帰的にサブキーの持つ値を表示できる。なお、Windows 10/11に付属しているreg.exeでは、オプション指定文字に「/」だけでなく、「-」を指定しても動く。最近のWindowsのコマンドは、Unixと同じくハイフンを使うものが増えてきた。このため、どっちでもいいようになっている。実際、両者を区別するのはかなり面倒だ。
キーを指定して値を調べるには、
reg.exe query HKCR\.shiodatest
などのようにQUERYサブコマンドでキーを指定する。
これで、キーに含まれる値(名前、種類、データ)とサブキー(直下のものだけ)を表示する。多数の値があり、特定の値だけがほしい場合には、「/v 名前」を指定する。また、キーの既定値を表示させたい場合には「/ve」を指定する。
ほとんどの場合、これだけでレジストリの確認ができる。また、「/s」オプションを付けることで、指定したキーのサブキー以下すべてを出力する。
キー、名前、データの検索には、「/f」オプションを使う。機能的には、レジストリエディタの検索機能とほとんど同じだ。
reg.exe HKCR\.shiodatest /f shell
とすると、指定したキー(HKCR\.shiodatest)以下で、「shell」が、サブキー、名前、データの中から検索される。
対象を限定したときには、「/k」(キー)、「/v」(名前)、「/d」(データ)を指定する。
reg.exeコマンドで、キーや値を変更する場合、ADDサブコマンドを使う。可能なのは、キー、値の新規追加か、既存のキー、値の上書き変更である。reg.exeでは名前の変更などは直接はできない。
この連載の記事
-
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 -
第447回
PC
この秋登場のWindows 11の新バージョン、Ver.24H2の状況を見る - この連載の一覧へ