本文へ移動

右クリックに「ゴミ箱を経由せず削除」を追加する方法——注意点と元に戻す手順

右クリックからファイルをゴミ箱を経由せず削除するイメージ Windows設定・操作

不要になった作業ファイルを、右クリックからゴミ箱へ入れずに削除できるようにします。追加する項目名は「ゴミ箱を経由せず削除」です。

削除前に対象名を確認する画面を出し、「はい」を選んだときだけ削除する仕組みにします。メニューを作成して、テスト用ファイルで確認し、使わなくなったときにメニューを消すところまで進めます。

削除したデータはゴミ箱から戻せません。また、ゴミ箱を経由しないだけで、データを復元困難にする「完全消去」ではありません。まずは不要なテスト用データで操作してください。

右クリックへの追加が不要なら、Windows標準の Shift + Delete でもゴミ箱を経由せず削除できます。

登録前に、同じ設定がないか確認する

レジストリの編集前にバックアップを取っておきます。業務PCでは社内の運用ルールを確認し、動作確認にはOneDriveなどの同期フォルダーを使わないようにします。

スタートで cmd を検索し、「コマンド プロンプト」を管理者として実行します。次の2行で、これから追加するキーが存在するか確認してください。

reg query "HKCR\*\shell\WanwanoDelete"
reg query "HKCR\Directory\shell\WanwanoDelete"
登録前の確認。2か所とも「指定されたレジストリ キーまたは値が見つかりませんでした」と表示されています。
登録前の確認。2か所とも「指定されたレジストリ キーまたは値が見つかりませんでした」と表示されています。

この段階では「見つかりませんでした」で問題ありません。まだ同じ名前の設定がないことを確認できたので、作成へ進みます。

設定が表示された場合や、C:\Windows\SilentDelete.vbs がすでにある場合は、ここで止めて内容を確認してください。既存の設定・ファイルを上書きしないための確認です。

1. 確認画面付きの削除スクリプトを保存する

スタートで「メモ帳」を検索し、管理者として実行します。次の内容を貼り付けてください。「いいえ」が初期選択になる確認画面を表示し、「はい」を選ぶと指定されたファイル、またはフォルダーとその中身を削除するコードです。

Option Explicit

Dim fso, path, name, result
Set fso = CreateObject("Scripting.FileSystemObject")

If WScript.Arguments.Count = 0 Then
    MsgBox "削除対象が指定されていません。", vbExclamation, "削除できません"
    WScript.Quit 1
End If

path = WScript.Arguments(0)
name = fso.GetFileName(path)
result = MsgBox("次の項目をゴミ箱へ移動せず削除します。" & vbCrLf & vbCrLf & name & vbCrLf & vbCrLf & "元に戻せません。続けますか?", vbYesNo + vbExclamation + vbDefaultButton2, "削除の確認")

If result <> vbYes Then WScript.Quit 0

On Error Resume Next
If fso.FileExists(path) Then
    fso.DeleteFile path, True
ElseIf fso.FolderExists(path) Then
    fso.DeleteFolder path, True
Else
    MsgBox "対象が見つかりません。", vbExclamation, "削除できません"
    WScript.Quit 1
End If

If Err.Number <> 0 Then
    MsgBox "削除できませんでした。" & vbCrLf & Err.Description, vbCritical, "エラー"
    WScript.Quit 1
End If

メモ帳の「名前を付けて保存」で、次のように指定します。

保存先 C:\Windows
ファイル名 SilentDelete.vbs
ファイルの種類 すべてのファイル
文字コード ANSI(日本語Windows向け)

保存後、エクスプローラーで C:\Windows を開き、SilentDelete.vbs があることを確認します。SilentDelete.vbs.txt になっていないかも確認してください。拡張子が見えない場合はファイル名拡張子を表示する手順で確認できます。

2. 右クリックメニューに登録する

先ほどの管理者のコマンドプロンプトへ戻り、次の6行を実行します。PowerShellではなく、コマンドプロンプト用の書き方です。

前半3行がファイル用、後半3行がフォルダー用です。どちらも、保存した SilentDelete.vbs を呼び出します。

reg add "HKCR\*\shell\WanwanoDelete" /ve /d "ゴミ箱を経由せず削除" /f
reg add "HKCR\*\shell\WanwanoDelete" /v Icon /d "shell32.dll,-240" /f
reg add "HKCR\*\shell\WanwanoDelete\command" /ve /d "wscript.exe \"C:\Windows\SilentDelete.vbs\" \"%1\"" /f

reg add "HKCR\Directory\shell\WanwanoDelete" /ve /d "ゴミ箱を経由せず削除" /f
reg add "HKCR\Directory\shell\WanwanoDelete" /v Icon /d "shell32.dll,-240" /f
reg add "HKCR\Directory\shell\WanwanoDelete\command" /ve /d "wscript.exe \"C:\Windows\SilentDelete.vbs\" \"%1\"" /f
6行それぞれに「この操作を正しく終了しました。」が表示されたことを確認します。
6行それぞれに「この操作を正しく終了しました。」が表示されたことを確認します。

登録された表示名と呼び出し先を確認する

まず、ファイル用の設定を確認します。

reg query "HKCR\*\shell\WanwanoDelete"
reg query "HKCR\*\shell\WanwanoDelete\command"
ファイル用の登録内容。表示名と、wscript.exeからSilentDelete.vbsを呼び出すコマンドを確認します。
ファイル用の登録内容。表示名と、wscript.exeからSilentDelete.vbsを呼び出すコマンドを確認します。

続けて、フォルダー用も同じように確認します。

reg query "HKCR\Directory\shell\WanwanoDelete"
reg query "HKCR\Directory\shell\WanwanoDelete\command"
フォルダー用にも、同じ表示名と呼び出し先が登録されています。
フォルダー用にも、同じ表示名と呼び出し先が登録されています。

3. テスト用ファイルで削除を確認する

同期されていない場所に「テスト」フォルダーを作り、中に不要なテキストファイルを1つ用意します。削除前にゴミ箱も開き、元の状態を見ておきます。確認のためにゴミ箱を空にする必要はありません。

テスト用ファイルを右クリックし、「ゴミ箱を経由せず削除」を選びます。Windows 11で項目が見当たらない場合は「その他のオプションを表示」を開いてください。

追加した「ゴミ箱を経由せず削除」を選びます。
追加した「ゴミ箱を経由せず削除」を選びます。

「はい」を選んで削除し、ゴミ箱を確認する

確認画面に表示された対象名を確認して、「はい」を選びます。元のフォルダーからテスト用ファイルが消え、ゴミ箱にも追加されていないか確認します。

削除後の画像。上の「テスト」フォルダー、下のゴミ箱のどちらにもファイルは表示されていません。
削除後の画像。上の「テスト」フォルダー、下のゴミ箱のどちらにもファイルは表示されていません。

フォルダーも使う場合は、不要なファイルだけを入れた別のテスト用フォルダーで同じ手順を確認します。フォルダーを選ぶと、中のファイルもまとめて削除されます。

元に戻す:追加したメニューを削除する

ここで元に戻せるのは右クリックメニューの設定です。すでに削除したファイルやフォルダーは戻りません。

今回新しく作成した2つのキーを、管理者のコマンドプロンプトで削除します。

reg delete "HKCR\*\shell\WanwanoDelete" /f
reg delete "HKCR\Directory\shell\WanwanoDelete" /f

続けて、キーが残っていないか確認します。

reg query "HKCR\*\shell\WanwanoDelete"
reg query "HKCR\Directory\shell\WanwanoDelete"
削除コマンドは正常終了し、確認コマンドでは2か所とも「見つかりませんでした」と表示されています。
削除コマンドは正常終了し、確認コマンドでは2か所とも「見つかりませんでした」と表示されています。

右クリックメニューを開き直し、「ゴミ箱を経由せず削除」が消えていることも確認してください。

参考資料

Microsoft Learn:wscript。/B は警告や入力プロンプトを表示しないバッチモードのため、確認画面を出すこの手順では付けていません。