PowerShellからのレジストリアクセス
PowerShellではレジストリ専用のコマンドが存在しない。PSドライブという機能を使い、レジストリをファイルのように扱う。このとき、ファイルと同じ「Item」系コマンドを使う。
キーがパス、値がファイルである。PSドライブとは、さまざまなデータをファイルシステムのように扱うための仕組み。ファイルシステムでは、「C」や「D」などのドライブ文字がPSドライブになっているが、レジストリではルートキーがPSドライブである。PSドライブは、パスの頭に付け、コロンを介して以下にパスを記述する。
たとえば「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft」は、「HKLM:\SOFTWARE\Microsoft」と表記できる。
Get-Item HKLM:\SOFTWARE\Microsoft
のように使う。
PSドライブが定義されていないルートキーは、レジストリプロバイダー(Microsoft.PowerShell.Core\Registry::だが、Registry::と表記できる)を使って「Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft」と記述する。
標準では「HKCU」と「HKLM」の2つが定義されている。また、New-PSDriveコマンドを使えば、他のルートキーをPSドライブとして定義することもできる。たとえば、
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
で、「HKEY_CLASSES_ROOT」を「HKCR」というPSドライブに定義できる。
こうした仕組みになっているため、PowerShellでレジストリを扱うときには、ちょっと頭を切り替える必要がある。
たとえば、キーにある値を列挙するには、Get-Itemを使う。 レジストリの場合、「Get-ItemProperty」でも値を列挙できる。ただし、この場合、PowerShellのプロパティ(PSで始まる)が付加される。サブキーを含めて表示させたい場合には、Get-ChildItemを使う。
少し面倒な感じもあるが、PowerShellでは、タブによる補完が可能で、レジストリキーにも有効なため、reg.exeコマンドよりも、入力効率がいいというメリットがある。また、結果を変数に保存してコマンドの繰り返しを避けたり、さまざまなコマンドで対象を絞る、データを抽出するといったことが可能である。
ただ、意外と検索が面倒だ。PowerShellでは、一般にコマンドを使って対象を含むデータを列挙して、その中から目的のものを選択するという考えになる。レジストリキーや名前での検索は難しくないが、データでの検索はかなり面倒なコマンドになり、reg.exeを使ったほうが手っ取り早い。
その代わりといってはなんだが、キーや名前の変更、データの追記といった処理は比較的簡単だ。reg.exeでは、データは書き換えしかできないため、元のデータを表示させて、これをADDサブコマンドの引数に含めて上書き用のデータを指定する必要がある。
レジストリエディタは、基本的な機能を網羅しているため、たいていはこれで十分なのだが、ウィンドウを開いたり、キーを探すのが面倒に感じることがある。コマンドラインを使っているなら、レジストリを確認したい場合には、reg.exeコマンドを使えばいいだろう。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第541回
PC
AIを組み込んだWindowsターミナル「Intelligent Terminal」をインストールして試してみる -
第540回
PC
Windows 11に付属の新しいOutlookでアカウント設定をする -
第539回
PC
Microsoft製の新しいWindows用日本語入力「Copilot Keyboard」を使う -
第538回
PC
PowerShellをシェルとして使うためのポイント【情報表示のやり方】 -
第537回
PC
PowerShellをシェルとして使うためのポイントを解説 -
第536回
PC
Microsoft製のコンソールエディタMS-Editが2.0になり、文法ハイライト機能が搭載 -
第535回
PC
WSLコンテナーのプレビューを試す 今年はWSLに動きがありそうだ -
第534回
PC
Windows 11におけるアプリインストーラーとwinget -
第533回
PC
PCの世界ではすっかり存在感が薄くなった光学メディアをあらためて整理 -
第532回
PC
モニターの情報が含まれる「VESA EDID」をWindowsで調べる方法 -
第531回
PC
Windowsのコンソール上でUnix/Linuxの標準的なコマンドを動かす「Windows CoreUtils」 - この連載の一覧へ













