
Windowsでは、システムやアプリケーションの設定情報などがレジストリと呼ばれるデータベースに保存されており、Windowsやアプリの設定を変更するときにレジストリに保存されいるデータを編集して設定変更しなければならないケースがあります。
Windowsでレジストリを編集する際のもっとも一般的な方法は、GUIベースの「レジストリエディター(regedit.exe)」を使った方法で、エントリの追加や変更、インポート、エクスポートといったレジストリ操作全般をマウスとキーボードを使って行うことができます。
ですが、レジストリエディターでの操作は視覚的には分かりやすいものの、同じ操作を繰り返すような場合や、同じ操作を複数のパソコンで行うような場合は、少々面倒です。そのようなときは、WindowsコマンドやPowerShellといったコマンドを使ってレジストリを操作するのが便利です。
そこでここでは、レジストリエディターやコマンドを使ってレジストリを操作する基本的な方法を解説します。
目次
Windowsコマンドを使った方法
Windowsコマンドを使ってレジストリ操作を行う場合は「REG」コマンドを利用します。REGコマンドには、エントリの追加/削除/変更/エクスポート/インポートするといった操作ごとにサブコマンドが用意されています。
主なサブコマンドは、以下のとおりです。
- REG QUERY - 既存のレジストリ情報を表示
- REG ADD - レジストリキーや値の追加や更新
- REG DELETE - レジストリキーや値の削除
- REG EXPORT - レジストリキーや値を.regファイルへ書き出し
- REG IMPORT - REG EXPORTで書き出されたレジストリキーや値の書き戻し
REG QUERY
既存のレジストリキーや値を確認したいときは、以下のようにコマンドを実行します。
> reg query HKCU\Environment /v my-varREG ADD
新しいレジストリキーや値を追加/変更するときは、以下のようにコマンドを実行します。
> reg add HKCU\Environment /v my-var /t reg_sz /d "Hello"コマンドを実行すると確認メッセージが表示され「y」と入力することで処理が実行されます。(「/f」オプションを付けると、確認なしで処理が実行されます。)
REG DELETE
既存のレジストリ値を削除するときは、以下のようにコマンドを実行します。
> reg delete HKCU\Environment /v my-varコマンドを実行すると確認メッセージが表示され「y」と入力することで処理が実行されます。(「/f」オプションを付けると、確認なしで処理が実行されます。)
REG EXPORT、REG IMPORT
登録されているレジストリ情報をエクスポート(バックアップ)したり、インポート(復元)するときは、REG EXPORTやREG IMPORTコマンドを使用します。
REG EXPORTやREG IMPORTコマンドの詳しい使い方は、以下の記事をご覧ください。
PowerShellコマンドレットを使った方法
PowerShellコマンドレットを使ってレジストリ操作を行うときに使用する主なコマンドレットは、以下のとおりです。
- Get-ItemProperty - 既存のレジストリ情報を表示
- Set-ItemProperty - レジストリ値の更新
- New-Item - レジストリキーの追加
- New-ItemProperty - レジストリ値の追加
- Remove-ItemProperty - レジストリキーや値の削除
Get-ItemProperty
既存のレジストリ情報を取得するときは、Get-ItemPropertyコマンドレットを使って、以下のようにコマンドを実行します。
PS> Get-ItemProperty -Path "HKCU:\Environment"特定のプロパティ情報だけを取得したいときは、以下のようにコマンドを実行します。
PS> Get-ItemProperty -Path "HKCU:\Environment" -Name "my-var"Set-ItemProperty
登録されているレジストリ情報を更新するときは、Set-ItemPropertyコマンドレットを使って、以下のようにコマンドを実行します。
PS> Set-ItemProperty "HKCU:\Environment" -name "my-var" -value "See you" -Forceなお、コマンドの最後に「-whatIf」オプションを付加すれば、レジストリの変更やファイルの削除など元に戻せない操作を行う場合に、いきなり実行するのではなく処理内容を事前に確認することができるため、より安全にコマンドを実行できます。
New-Item
新しいレジストリキーを追加するときは、まずキーが存在しているかを確認し、キーが存在していない場合には以下のコマンドでまずキーを作成します。
PS> if (!(Test-Path "HKCU:\Environment")) { New-Item -Path "HKCU:\Environment" -Force }New-ItemProperty
新しいレジストリ値を追加するときは、New-ItemPropertyコマンドレットを使って、以下のようにコマンドを実行します。
PS> New-ItemProperty -Path "HKCU:\Environment" -Name "new-var" -PropertyType String -Value "Hello" -ForceRemove-ItemProperty
既存のレジストリ値を削除するときは、Remove-ItemPropertyコマンドレットを使って、以下のようにコマンドを実行します。
PS> Remove-ItemProperty -Path "HKCU:\Environment" -name "my-var"関数化がおすすめ
PowerShellコマンドレットでレジストリを操作する場合、レジストリキーや値の追加、更新それぞれに異なるコマンドを実行する必要があり、REGコマンドのような手軽さがありません。
そのため、PowerShellコマンドレットでレジストリキーや値を追加したり更新するなら、以下のような関数を作成すれば、REGコマンドライクに実行できます。
# レジストリ設定
function Add-YaReg {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$path,
[Parameter(Mandatory=$true)]
[string]$name,
[Parameter(Mandatory=$true)]
[string]$type,
[Parameter(Mandatory=$true)]
[string]$value
)
if (!(Test-Path $path)) {
New-Item -Path $path -Force
New-ItemProperty -Path $path -Name $name -Value $value -PropertyType $type -Force | Format-List
} elseif (!(Get-ItemProperty -Path $path -Name $name -ErrorAction SilentlyContinue)){
New-ItemProperty -Path $path -Name $name -Value $value -PropertyType $type -Force | Format-List
} else {
Set-ItemProperty -Path $path -Name $name -Value $value -Passthru -Force | Format-List
}
}
PS> Add-YaReg -path 'HKCU:\Environment' -name 'new-var' -type String -value 'Hello'あとがき
レジスト操作は、レジストリエディターを使った方法が一般的ですが、複数のマシンに同じ操作を行うことがあるなら、コマンドでの操作方法を覚えておくと作業効率を格段にアップできます。ご活用あれ。