今回は、Windows 10 または Windows 11 でバッチファイル(拡張子 .bat)をダブルクリックなどで実行する際にパスワードの入力を求めるようにする方法を紹介します。
通常はバッチファイルを実行すると、そのまま実行されますね。
管理者として実行をすれば、ユーザーアカウント制御の画面が表示され、「はい」をクリックすると実行されます。
今回の方法でパスワードの入力を求めるようにすると、正しいパスワードを入力しない限り先に進むことができなくなります。
バッチファイルを実行させたくない場合やワンクッション置いてから実行したい場合などにご使用ください。
バッチファイル実行時にパスワードの入力を求めるための設定
バッチファイル実行時にパスワードの入力を求めるためには、パスワードの入力を求めるバッチファイルの作成、及びレジストリの編集が必要になります。
レジストリの操作を間違えるとシステムが起動できなくなるなど不具合が起きる可能性があります。事前にシステムの復元などでバックアップを取り、自己責任で行うようお願いします。
- システムの復元ポイント作成方法及び復元方法
- レジストリエディタの開き方及びバックアップ方法
- Win10 レジストリの予備知識|概念、開き方、レジストリの内部構成
※Windows 11 のレジストリも基本は同じです。
パスワードの入力を求めるバッチファイルの作成
バッチファイルの作成方法は、次のページを参考にしてください。
「pass.bat」の作成
「pass.bat」というバッチファイルを作成し、次の内容を入力(コピー)して保存します。
@echo off
echo "%*"
:loop
set /p in=パスワードの入力:
if not "%in%"=="123" cls&echo パスワードが違います。正しいパスワードを入力してください。&goto loop
cls&"%*"
作成した「pass.bat」を任意の場所(ここでは Cドライブ直下)に移動しておきます。

レジストリの編集
Windowsキー + R を押して、「ファイル名を指定して実行」を開き、「regedit」と入力して Enter をします。
レジストリエディターが開きますので、事前に次のキーをバックアップしておきましょう。
HKEY_CLASSES_ROOT\batfile\shell
1.HKEY_CLASSES_ROOT\batfile\shell\open\command キーを開き、右側の欄にある「(既定)」をダブルクリックで開きます。
2.値のデータが「”%1″ %*」となっていますので、次の値に変更して OK をクリックします。
"C:\pass.bat" %1
3.HKEY_CLASSES_ROOT\batfile\shell\runas\command キーを開き、右側の欄にある「(既定)」をダブルクリックで開きます。
4.値のデータが「%SystemRoot%\System32\cmd.exe /C “%1” %*」となっていますので、次の値に変更して OK をクリックします。
%SystemRoot%\System32\cmd.exe /C "C:\pass.bat" %1
これで設定は完了しましたので、レジストリエディターは終了しておきましょう。
※拡張子「.cmd」ファイルに対してもパスワードを求めたい場合は、次のキーを開き、「.bat」ファイルと同じ手順で値を変更します。
HKEY_CLASSES_ROOT\cmdfile\shell\open\command
HKEY_CLASSES_ROOT\cmdfile\shell\runas\command
バッチファイルを実行してみる
では、どこでもいいので適当にバッチファイルを作成して実行してみましょう。
サンプル:
@echo off
echo You have entered the correct password.
pause
バッチファイルを実行するとパスワードを求められます。

間違ったパスワードを入力して Enter を押すと、「パスワードが違います。正しいパスワードを入力してください。」と表示され、再度パスワードの入力を求めます。

正しいパスワードを入力して Enter を押すとそのまま実行されます。

管理者として実行した場合は、ユーザーアカウント制御の画面で「はい」をクリックした後にパスワードを求められます。
元に戻す方法
元に戻す場合は、バックアップしたレジストリファイルを実行してください。
注意事項
「ファイル名を指定して実行」やサードパーティ製のアプリからバッチファイルを直接実行するとパスワードを求められますが、「cmd /c “バッチファイルのフルパス”」で実行したり、コマンドプロンプトからフルパスを指定して実行するとパスワードは求められずに直接実行されます。
コメント