Programming Field

「ファイル名を指定して実行」のWin+Rやアドレスバーのコマンド実行を無効化する: レジストリ一発適用&グループポリシー手順

この記事では、Win(Windowsキー)+Rキーの「ファイル名を指定して実行」ダイアログ(Run ダイアログ または RunFileDlg ダイアログ)、およびエクスプローラー(「ファイルを開く」ダイアログを含む)のアドレスバーから行うコマンド実行を無効化する方法を、個人ユーザー向けのレジストリーの一発適用と、企業・学校などの組織向けグループポリシー設定の両方から紹介しています。

概要

できること

  • ユーザーが Win+R やアドレスバーから不審なコマンドを実行する経路を防止できます。
    • いわゆる「ClickFix」や「FileFix」への簡易的な対策として有効です。
    • なお、「タスク マネージャー」からのタスク(プログラム)実行も無効化されますが、コマンドプロンプトやPowerShell上でのコマンド実行は無効化されません。
  • 個人向け: レジストリに HKU 経由で書き込み+ gpupdate /force で即時反映できます。
  • 組織向け: グループポリシー設定で一括展開できます。

注意点

  • これは UI 経路を塞ぐ方法であり、完全な実行制御には AppLocker や WDAC (Windows Defender Application Control) を併用するのがベターです。
  • Home エディションはグループポリシー エディターが使えないため、レジストリ方式を利用します。

個人向け: レジストリで一発適用

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

次のレジストリの設定を行って反映させることで、「Win+R などによる『ファイル名を指定して実行』の操作」および「エクスプローラー(ファイルを開くダイアログなどを含む)のアドレスバーにコマンドを入力してのコマンド実行」を防ぐことができます。

基本の設定内容

後述のコマンドでは以下のレジストリを設定します。

キー: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
値名: NoRun (DWORD)
値  : 1 = 無効化(0 または削除で元に戻る)

ただし、ポリシー系のキーは通常ユーザーでは書き込みできないことが多くあります。そのため、管理者権限で現在ログオン中のユーザーの SID を取得し、HKU (HKEY_USERS) に直接書き込むのが確実です。

キー: HKEY_USERS\<ユーザーSID>\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
値名: NoRun (DWORD)
値  : 1 = 無効化(0 または削除で元に戻る)

一行コマンド例 (コマンドプロンプト)

直接 reg add を呼び出すシンプルな方法と、pause を挟んで結果を確認できる方法を併記します。

シンプル版(直接実行)

for /f "tokens=2 delims=," %1 in ('whoami /user /fo csv') do @if not "%~1"=="SID" runas /user:Administrator "cmd /c \"powershell Start-Process reg.exe -Verb runas -ArgumentList ('add','HKU\%~1\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer','/v','NoRun','/t','REG_DWORD','/d','1','/f')\""

pause 付き(ログ確認用)

for /f "tokens=2 delims=," %1 in ('whoami /user /fo csv') do @if not "%~1"=="SID" runas /user:Administrator "cmd /c \"powershell Start-Process cmd.exe -Verb runas -ArgumentList ('/c','reg','add','HKU\%~1\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer','/v','NoRun','/t','REG_DWORD','/d','1','/f','^^^&','pause')\""

これを設定するまでは「ファイル名を指定して実行」が使用できるため、以下の手順でコマンドを実行します。

  1. Win+R キーを押して「ファイル名を指定して実行」ダイアログを開く、またはスタートメニューの検索欄に「ファイル名を指定して実行」と入力して実行する
    • Windows 11 ではスタートボタンを右クリックしたときに出るメニューにある場合もあります。
  2. 入力欄に「cmd.exe」と入力して実行する(Enterキーを押す)
  3. 開いたコマンドプロンプトで上記のコマンドのいずれかを貼り付け実行する(最後にEnterを押す)
    • コマンドが長いので目コピは厳しいと思います。上記をコピーして貼り付けるのが簡便です。(セキュリティを考慮して自動コピーは提供していません)
    • 横に長いのでスクロールしてください。

実行後は上記のコマンドプロンプトで gpupdate /force と入力して実行することで、設定内容がその場で反映されます。

gpupdate /force も含めて以下のように1行にまとめることもできます。

for /f "tokens=2 delims=," %1 in ('whoami /user /fo csv') do @if not "%~1"=="SID" runas /user:Administrator "cmd /c \"powershell Start-Process reg.exe -Verb runas -ArgumentList ('add','HKU\%~1\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer','/v','NoRun','/t','REG_DWORD','/d','1','/f')\"" & gpupdate /force

PowerShell 版

$sid = (whoami /user /fo csv | ConvertFrom-Csv).SID
Start-Process reg -Verb RunAs -ArgumentList @('add',"HKU\$sid\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",'/v','NoRun','/t','REG_DWORD','/d','1','/f')
gpupdate /force

元に戻す方法

コマンドプロンプト

for /f "tokens=2 delims=," %1 in ('whoami /user /fo csv') do @if not "%~1"=="SID" runas /user:Administrator "cmd /c \"powershell Start-Process reg.exe -Verb runas -ArgumentList ('delete','HKU\%~1\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer','/v','NoRun','/f')\""
gpupdate /force

PowerShell

$sid = (whoami /user /fo csv | ConvertFrom-Csv).SID
Start-Process reg -Verb RunAs -ArgumentList @('delete',"HKU\$sid\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",'/v','NoRun','/f')
gpupdate /force

組織向け: グループポリシーで一括適用

1. ユーザー OU にリンクする(GPMC)

Active Directory 環境で、対象ユーザーが入っている OU にグループポリシーをリンクする方法です。グループ ポリシー管理コンソール(GPMC / gpmc.msc)を使います。GPMC は Windows Server に含まれます(クライアントから操作したい場合は RSAT の「グループ ポリシー管理ツール」を追加して利用できます)。

  1. GPMC (gpmc.msc) を開く
  2. 対象ユーザーをまとめた OU を用意(または既存 OU を確認) (コンピューター単位かユーザー単位かは状況に応じて選択します)
  3. 新しいグループポリシー(GPO)を作成し、わかりやすい名前を付与(例: Disable Run (User))
  4. GPO を編集し、ユーザーの構成 → 管理用テンプレート → スタート メニューとタスク バー → 「[スタート] メニューから [ファイル名を指定して実行] コマンドを削除する」= 有効 に設定
  5. 作成した GPO を 対象ユーザーの OU にリンク
  6. クライアントで gpupdate /force /target:user を実行(必要に応じて再ログオンを促す)
  7. 適用確認コマンド: gpresult /r /scope user

※ ここでは GPMC での詳細な手順については説明を省略します。適宜「Windows Server のグループ ポリシーの概要 | Microsoft Learn」や他のサイトなどをご確認ください。

2. セキュリティ グループで対象を絞る(GPMC)

ユーザーが複数の OU に分散している場合や、上位階層にリンクして対象だけに適用したい場合は、Security Filtering を使います(操作は GPMC (gpmc.msc) で行います)。

  1. 対象ユーザーを入れる セキュリティ グループ (例: GG-DisableRun-Users)を作成
  2. そのグループに対象ユーザーを追加
  3. GPMC で GPO を作成/編集し(設定は上記と同じ)、適用したい階層(ドメイン直下や上位 OU)にリンク
  4. GPO の [スコープ]Security FilteringAuthenticated Users を外し、代わりに 作成したグループを追加
  5. GPO が 読み取れる主体を残すため、[委任] → 詳細設定Authenticated Users(読み取りのみ) または Domain Computers(読み取り)を付与
  6. クライアントで gpupdate /force /target:user を実行し、必要に応じて再ログオンします。
  7. 適用確認: gpresult /r /scope user で GPO が当たっていることを確認します。

Security Filtering は 「読み取り」と「適用」の両方が満たされないと有効になりません。わからない場合は「Authenticated Users を 読み取りのみ残しつつ、適用対象はグループに限定する」構成が安全です。

GPMC(gpmc.msc)について

  • GPMC は Windows Server に含まれます(サーバー上で直接操作できます)。
  • Windows Server が使えない場合は、各ユーザー PC ごとに gpedit.msc(ローカル グループ ポリシー)または レジストリ方式で個別に適用する必要があります。

(ドメインを使わない場合)ローカル適用手順(gpedit.msc)

  1. 「ローカル グループ ポリシー エディター」(gpedit.msc)を開く
  2. 左ペインで ユーザーの構成管理用テンプレートスタート メニューとタスク バー に進む
  3. 「[スタート] メニューから [ファイル名を指定して実行] コマンドを削除する」有効 に設定する
    • 項目名は Windows のバージョンによって微妙に異なる場合があります。

その後、コマンドプロンプトやPowerShell、Windowsターミナルを開いて gpupdate /force を実行することで即時反映できます。場合によっては再ログオンが必要なこともあります。

※ Home エディションではグループポリシーが使えないため、レジストリ方式を使用する必要があります。

セキュリティ面の位置づけ

この設定は ClickFix など「Win+R を入力させる」タイプの攻撃、および FileFix など「ブラウザー上で『ファイルを開く』ダイアログを開いてそのアドレスバーからコマンドを実行させる」 に有効な対策です。ただし完全ではないため、次のような多層防御をおすすめします。

  • AppLocker / WDAC で実行ファイルを制御
  • EDR/ウイルス対策ソフトで不審挙動を検知
  • ユーザー教育で「『ファイル名を指定して実行』やアドレスバーに入力させる手口」に注意を促す
    • ユーザーへの注意喚起は非常に重要です。Webサイトでの「何かを入力してEnterする」ような手順は基本的に疑った方が良いと考えても良いかもしれません。

よくある質問

Q. 反映には再ログオンが必要ですか?

A. gpupdate /force で即時反映される場合が多いです。うまくいかない場合は Explorer の再起動や再ログオンを試してください。

Q. グループポリシーとレジストリどちらが良いですか?

A. 組織で多数の端末に適用する場合はグループポリシーが便利です。個人利用や Home エディションの場合はレジストリ方式をおすすめします。

Q. AppLocker や WDAC (Windows Defender Application Control) も使うべきですか?

A. Win+R を塞いでもショートカットやマクロ経由の実行は残るため、重要な環境では AppLocker や WDAC の併用を強くおすすめします。