このページの本文へ

前へ 1 2 次へ

Windows Info 第354回

レジストリエディタ以外、reg.exeコマンドやPowerShellからレジストリを操作する

2022年11月20日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 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サブコマンドでキーを指定する。

reg.exeコマンドのQUERYサブコマンドで、レジストリの表示や検索ができる

 これで、キーに含まれる値(名前、種類、データ)とサブキー(直下のものだけ)を表示する。多数の値があり、特定の値だけがほしい場合には、「/v 名前」を指定する。また、キーの既定値を表示させたい場合には「/ve」を指定する。

 ほとんどの場合、これだけでレジストリの確認ができる。また、「/s」オプションを付けることで、指定したキーのサブキー以下すべてを出力する。

 キー、名前、データの検索には、「/f」オプションを使う。機能的には、レジストリエディタの検索機能とほとんど同じだ。

reg.exe HKCR\.shiodatest /f shell

とすると、指定したキー(HKCR\.shiodatest)以下で、「shell」が、サブキー、名前、データの中から検索される。

レジストリの検索をするとき、「/f」で検索パターンを指定し、オプションで検索対象を限定できる

 対象を限定したときには、「/k」(キー)、「/v」(名前)、「/d」(データ)を指定する。

 reg.exeコマンドで、キーや値を変更する場合、ADDサブコマンドを使う。可能なのは、キー、値の新規追加か、既存のキー、値の上書き変更である。reg.exeでは名前の変更などは直接はできない。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン