Programming Field

Reg Delete - DOS コマンド一覧

スポンサーリンク

[Windows NT系/XP 以降] レジストリのキーや値の削除を行います。Regの操作の1つです。

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

構文

reg[.exe] delete <key> [/v <var-name> | /ve | /va]
    [/f] [/reg:[32|64]]
<key>
キー名を指定します。具体的な指定方法は「キー名の指定方法について」をご覧ください。
なお、キー名は完全パスで指定しますが、キーが存在しない場合はエラーとなります。
/v <var-name> | /ve | va
「/v <var-name>」を指定した場合は、<var-name> に削除したい値の名前を指定します。名前は単体の名前である必要があり、パス名を含めることはできません(パスは <key> に含めます)。
「/ve」を指定した場合は、指定したキーにある「既定」(または「標準」、無名)の値の削除を行います。削除すると「値の設定なし」の状態になります。
「/va」を指定した場合は、指定したキーに含まれるすべての値の削除を行います。(サブキー及びその中に含まれる値は削除されません。)
なお、どちらも省略した場合は <key> およびその中にある値とサブキー全ての削除を行います。
※ この仕様のため、特定のキーに含まれるすべてのサブキーを削除するオプションはありません。(全てのサブキーを削除する方法は例をご覧ください。)
/f
プロンプトを表示せずに削除を行います。/f を省略した場合、削除するかどうかを尋ねるプロンプトを表示します。
/reg:[32|64]
64ビット版と32ビット版(WOW64)の環境がある場合、「/reg:32」を指定すると32ビット版アプリケーションが使用するレジストリデータ(HKLMの場合は「HKLM\Software\WOW6432Node」以下など)、「/reg:64」を指定すると64ビット版アプリケーションが使用するレジストリデータを参照します。
なおこのオプションを省略した場合は、実行されるReg.exeが64ビット版であれば64ビット版、32ビット版(%SystemRoot%\SysWOW64 以下にあるもの)であれば32ビット版のレジストリを参照します。何らかのアプリケーションのレジストリデータを参照する場合は、そのアプリケーションの32ビット/64ビットが分かっているのであれば明示的にこのオプションを指定して曖昧さを回避することができます。
※ Reg.exeが32ビット版であっても「/reg:64」によって64ビット版のレジストリを参照することができます。
※ 64ビット版Reg.exeであれば、32ビット版のレジストリを参照する際に直接「HKLM\Software\WOW6432Node」以下などのキーを指定することも可能です。

解説

Regの「DELETE」コマンドはレジストリ内の値やキーを削除する際に用います。ファイルに対するDelコマンドと同様、削除すると元に戻せませんのでご注意ください(特に /f オプションはバッチ処理での削除など削除対象が明確である場合にのみ使用することを推奨します)。なお、レジストリのデータは事前に「SAVE」や「EXPORT」などを行ってバックアップすることができます。

サンプル1

reg delete "HKCU\Software\My Company\MyApp" /ve

「HKEY_CURRENT_USER\Software\My Company\MyApp」キーの「既定」の値を削除します。(既に存在しない場合はエラーになります。)

サンプル2 [バッチファイル]

for /f "delims=\ tokens=1,*" %%K in ('reg query "HKCU\Software\My Company\MyApp\Recent" /f "" /k') do (
    if not "%%L"=="" reg delete "%%K\%%L" /f
)

[拡張構文] 「HKEY_CURRENT_USER\Software\My Company\MyApp\Recent」キーの中にあるすべてのサブキーを削除します。Reg Queryでサブキーが出力できるため、それをForコマンド経由で取得してReg Deleteに渡しています。なお、Reg Queryは最後に総数を出力するため、それを除外するために「\」区切りで2番目以降の文字列が存在するかどうかをチェックしています。(キー名の場合は必ずルートキーがあるため「\」が入ります。)