トップページ

レジストリのバックアップ

はじめに

レジストリをバックアップする方法を紹介します。

レジストリ全体のバックアップ

レジストリ全体をバックアップするには「復元ポイント」を作成します。詳細については復元ポイントを作成するを参照してください。

復元ポイントの作成によってバックアップしたレジストリを復元するには「システムの復元」を実行します。詳細についてはシステムの復元を参照してください。

レジストリキーのバックアップ

特定のレジストリキーをバックアップするにはレジストリエディタを使用します。詳細についてはレジストリをバックアップするを参照してください。

ここではPowerShellのスクリプトを使用してレジストリをバックアップする方法を紹介します。

テキストエディタで次のようなスクリプトファイル(*.ps1)を作成してください。

%UserProfile%\export_registry.ps1
function Export-RegistryKey {
    param (
        [Parameter(Mandatory = $true)]
        [string]$RegistryKeyPath,

        [Parameter(Mandatory = $true)]
        [string]$OutputFolder
    )

    # 出力フォルダが存在するか確認し、存在しなければ作成する
    if (-Not (Test-Path -Path $OutputFolder)) {
        New-Item -ItemType Directory -Path $OutputFolder
    }

    # 出力ファイルのパスを作成する
    $KeyName = $RegistryKeyPath -replace '[\\:]', '_'  # 無効な文字を置換する
    $OutputFile = Join-Path -Path $OutputFolder -ChildPath "${KeyName}.reg"

    # レジストリキーをエクスポートする
    reg export $RegistryKeyPath $OutputFile /y

    # エクスポートを確認する
    if (Test-Path -Path $OutputFile) {
        Write-Output "レジストリキーは正常にエクスポートされました: $OutputFile"
    }
    else {
        Write-Output "レジストリキーのエクスポートに失敗しました。"
    }
}

function Export-MultipleRegistryKeys {
    param (
        [Parameter(Mandatory = $true)]
        [string[]]$RegistryKeyPaths,  # 複数キーを配列で受け取る

        [Parameter(Mandatory = $true)]
        [string]$OutputFolder
    )

    foreach ($keyPath in $RegistryKeyPaths) {
        Write-Host "エクスポートしています: $keyPath"
        Export-RegistryKey -RegistryKeyPath $keyPath -OutputFolder $OutputFolder
    }
}

# エクスポートするキーのパス
$keys = @(
    "HKCU\Software\Microsoft\Windows\CurrentVersion\Run",
    "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters",
    "HKCU\Console"
)

# エクスポートするキーの出力先
$path = Join-Path -Path $HOME -ChildPath "RegistryBackup"

Export-MultipleRegistryKeys -RegistryKeyPaths $keys -OutputFolder $path

ターミナルで上記のスクリプトを実行します。

# cd
# export_registry.ps1

出力先のフォルダにレジストリファイル(*.reg)が作成されます。レジストリファイルを実行するとレジストリが復元されます。