Programming Field

Regコマンドでレジストリを操作するバッチファイル実例 - Windowsコマンド実用例

Windowsのレジストリ設定を変更する場面で、バッチファイルを用いて reg コマンドを一括実行する方法を紹介します。手動でレジストリエディターを開かずに設定を自動化したい場面で便利です。

このページではWindowsのレジストリを書き換える内容を扱っています。レジストリにはWindowsの重要な設定も含まれているため、レジストリに対する操作は慎重に行ってください。レジストリの操作にあまり慣れていないときは事前のバックアップを強く推奨します。また、不用意にいろいろなデータの書き換えを行うとWindowsが正常に起動しなくなる原因となります。なお、このページにある内容を利用して生じた問題の責任は負いかねます。

使用コマンド

  • Reg - レジストリキーや値の追加・変更・削除
  • If - 条件分岐(キーや値の存在チェック)
  • Findstr - テキスト(値)の解析
  • Echo - メッセージ表示(ログ代わり)

対象読者

  • 複数のレジストリ設定をまとめて変更したい方
  • 環境構築・初期設定をバッチファイルで自動化したい方

レジストリ変更バッチの例

以下は、エクスプローラーでウィンドウ最大化ボタンにマウスカーソルを合わせたときに表示される「スナップレイアウト」提案ポップアップ(Snap Assist Flyout)を無効化する設定です。EnableSnapAssistFlyout の値を 0 に設定することで、ポップアップを非表示にします。

@echo off
setlocal

REM レジストリキーと値の定義
set KEY=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
set VALUENAME=EnableSnapAssistFlyout

REM 設定を上書き(常に値を 1 にする)
reg add "%KEY%" /v %VALUENAME% /t REG_DWORD /d 0 /f

REM 完了メッセージ
echo SnapAssistの提案ポップアップを無効化しました。

応用例:複数設定の一括適用

複数のレジストリ設定をまとめて初期化する場合も、以下のように同一バッチで複数回 reg addreg delete を使うことで対応可能です。

REM タスクバーの検索ボックスを非表示にする
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Search" /v SearchboxTaskbarMode /t REG_DWORD /d 0 /f

REM ダークモードを有効にする
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v AppsUseLightTheme /t REG_DWORD /d 0 /f

設定内容はWindowsのバージョンやエディションにより異なる場合があるため、適用前に十分に確認してください。

応用例:レジストリ値を取得して条件処理を行う

reg query を使って既存のレジストリ値を読み取り、それに応じてログファイルへの書き出しや条件分岐を行うことも可能です。以下の例では、タスクバーの検索ボックスの設定状態を確認し、ログに出力した上で無効化処理を行います。

@echo off
setlocal

set KEY=HKCU\Software\Microsoft\Windows\CurrentVersion\Search
set VAL=SearchboxTaskbarMode
set LOG=reg_check.log

REM 現在の設定を確認してログに書き出す
reg query "%KEY%" /v %VAL% > "%LOG%" 2>NUL

REM 値が 0 でなければ変更を実行
findstr /r /c:"%VAL%\s*REG_DWORD\s*0x0" "%LOG%" >nul
if errorlevel 1 (
    echo %VAL% の値が 0 ではないため無効化を実行します。
    reg add "%KEY%" /v %VAL% /t REG_DWORD /d 0 /f
) else (
    echo %VAL% は既に無効になっています。
)

また、一時ファイルを使わずに値を取得したい場合は、for /f を使って reg query の出力を直接解析する方法もあります。

@echo off
setlocal

set KEY=HKCU\Software\Microsoft\Windows\CurrentVersion\Search
set VAL=SearchboxTaskbarMode

for /f "tokens=3" %%A in ('reg query "%KEY%" /v %VAL% 2^>NUL ^| findstr /r /c:"%VAL%"') do (
    if /i not "%%A"=="0x0" (
        echo %VAL% の値が %%A のため、無効化します。
        reg add "%KEY%" /v %VAL% /t REG_DWORD /d 0 /f
    ) else (
        echo %VAL% は既に 0x0 です。
    )
)

このように、レジストリの読み取りと分岐処理を組み合わせることで、柔軟な構成変更や状態確認スクリプトを実現できます。

注意点

  • レジストリの操作はシステムに影響するため、実験する際は実行前にバックアップを取ることを推奨します。
  • HKLM (HKEY_LOCAL_MACHINE) に変更を加えるようなバッチファイルは「管理者として実行」する必要がある場合があります。
  • 値の型(REG_SZREG_DWORD など)を間違えると設定が正しく反映されません。

関連項目