Windowsで実行可能ファイル(.EXE)を開く際の問題を解決する方法

Windows で壊れた EXE ファイルの関連付けを修復するにはどうすればいいですか?

ファイルを開こうとしても何も起こらなかったり、「このファイルには関連付けられたアプリがありません」といった奇妙なWindowsエラーが表示されたりすると、かなりイライラします。通常、このような問題はウイルスがレジストリを壊したり、Windowsを「最適化」しようとして失敗したりしたことが原因です。主な問題は、Windowsに*.exeファイルの処理方法を指示するレジストリエントリが壊れてしまったり、削除されたりすることです。そして当然のことながら、Windowsは修復を本来よりも困難にしています。

セットアップによっては、デフォルトの修正だけでは不十分な場合があります。レジストリを少しいじったり、セーフモードの「回復状態」からコマンドを実行したりする必要があるかもしれません。目標は基本的に、Windowsに実行ファイルが通常通り実行されるように認識させ、混乱したり、常にメモ帳やペイントがデフォルトで起動したりしないようにすることです。このプロセスは少し技術的ですが、実行可能であり、破損したレジストリを修正するためだけにWindowsを消去して再インストールする必要がなくなります。

レジストリとファイルの関連付けを修正する

方法1: コマンドラインでEXEファイルの関連付けをリセットする

この修正は、Windowsが*.exeファイルを処理する方法を定義する関連レジストリキーを直接リセットするので便利です。少し奇妙ですが、少なくともほとんどの場合は機能します。管理者特権のコマンドプロンプトまたはPowerShellでいくつかのコマンドを実行する必要があるため、プロセスをショートカットするバッチファイルを作成すると便利です。ある環境ではすぐに機能しましたが、別の環境では再起動して再試行する必要がありました。

  • デスクトップに新しいテキスト ファイルを作成し、次の行を貼り付けます。start cmd
  • run.batとして保存します。
  • ファイルを右クリックし、「管理者として実行」を選択します。UACプロンプトが表示される場合がありますので、確認してください。
  • コマンド プロンプトが開いたら、次のコード行全体を貼り付けます。
reg delete HKEY_CLASSES_ROOT\.exe /ve /f reg add HKEY_CLASSES_ROOT\.exe /ve /d exefile /f reg delete HKEY_CLASSES_ROOT\exefile /ve /f reg add HKEY_CLASSES_ROOT\exefile /ve /d "Application" reg delete HKEY_CLASSES_ROOT\exefile\shell\open\command /ve /f reg add HKEY_CLASSES_ROOT\exefile\shell\open\command /ve /d "\"%1\" %*" 

これにより、*.exe の関連付けがデフォルトにリセットされます。その後、再起動すると正常に戻ります。レジストリがひどく破損している場合は、多少の異常が発生する可能性がありますので、何度か試したり再起動したりして問題が解決しても驚かないでください。

方法2:セーフモードでレジストリを手動で修正する

*.exe をダブルクリックしても、何をやってもうまくいかない場合は、セーフモードでレジストリを直接編集する必要があるかもしれません。これは少し面倒ですが、Windows が壊れていて、通常モードでは修復できない場合もあります。

  1. セーフモードで再起動します。最も速い方法は、起動プロセス中に強制的に3回シャットダウンして、WinRE(Windows回復環境)を起動することです。
  2. WinREに入ったら、「トラブルシューティング」>「詳細オプション」>「スタートアップ設定」>「再起動」に進みます。次に、F4キーを押してセーフモードで起動します。
  3. を開きますregedit.exe。正常に起動しない場合は(これもexeファイルの問題です)、WinREのコマンドプロンプトまたは回復ドライブから実行できます。
  4. HKEY_CLASSES_ROOT\.exeに移動し、 *Default* 値をexefileに変更します。
  5. 次に、HKEY_CLASSES_ROOT\exefile\shell\open\commandに移動し、*Default* の値を に変更します"%1" %*
  6. また、 HKCR\exefile\shell\openHKCR\exefileの同じ *Default* 値も確認します。
  7. 通常どおり再起動し、*.exe ファイルが起動するかどうかを確認します。

一部のマシンでは、レジストリを操作した後、assoc.exe=exefile手早くクリーンアップするために管理者コマンド プロンプトで実行する価値がある場合があります。

修正を強化するための追加チェック

  • 管理者コマンドプロンプトで実行してsfc /scannow、システムイメージとファイルの問題を修正します。DISM /Online /Cleanup-Image /RestoreHealth
  • ウイルス対策ソフトやセキュリティ設定によって *.exe ファイルの実行がブロックされていないことを確認してください。マルウェア感染の恐れがあると、ウイルス対策ソフトが誤作動を起こし、予防措置としてすべての実行ファイルをブロックすることがあります。
  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exeの UserChoice キーが欠落しているかクリーンであることを確認します。存在する場合は削除します。間違った関連付けが強制される場合があります。

コマンドやシステムツールを実行できない場合はどうすればよいでしょうか?

レジストリエディターもコマンドプロンプトも開かない場合は、セーフモードかリカバリディスクが本当に必要なケースの一つです。Windowsは当然のことながら、ウイルスや単なる不具合のあるアップデートよりも、より困難な状況を作り出す必要があるからです。場合によっては、セーフモードで起動してレジストリの修正を行う以外に方法がないこともあります。また、環境によっては、回復環境や起動可能なUSBメモリからこれらの修正プログラムを実行することで、状況を改善できることもあります。

Windowsでネットワーク共有からEXEファイルを実行できない?解決策はこれだ

ローカルで実行中のEXEファイルは正常に動作するのに、ネットワーク共有からの起動時に「Windows は \\server\shared\file.exe にアクセスできません」のようなエラーが発生する場合は、おそらく権限またはSMBプロトコルの問題です。正確なエラーメッセージから原因を特定できるかもしれませんが、私の経験では、通常は権限の問題か、SMBのバージョンサポートが古いことが原因です。

  1. 共有フォルダの権限を確認してください。ファイルエクスプローラー > プロパティ > セキュリティで、ユーザーに読み取りと実行の権限があることを確認してください。読み取り権限しか付与されていない場合があり、実行ファイルを実行するには不十分です。
  2. 権限を手動で変更するか、PowerShell で次のようなコマンドを使用して変更します。
  3. icacls "\\server\shared" /grant YourUser:(RX)
  4. 互換モードでアプリを実行してみてください。ファイルを右クリックし、[プロパティ] > [互換性]に移動して、Windows 8 モードを選択し、ネットワーク共有から再試行してください。

もう一つの奇妙な点はSMBプロトコルです。古いデバイスやNASはSMBv1しかサポートしていない可能性がありますが、セキュリティリスクのため、現在はデフォルトで無効になっています。Windows Server 2003を実行しているデバイスや古いNASの場合、「0xc00000baアクセス違反」などのエラーが表示されることがあります。PowerShellを使用して、有効になっているSMBバージョンを確認してください。

Get-SmbServerConfiguration | Select EnableSMB2Protocol

SMBv2 または SMBv3 が無効になっている場合は、次のコマンドで再度有効にします。

Set-SmbServerConfiguration -EnableSMB2Protocol $true

ただし、SMB1を有効にするとセキュリティが確保されないため、サーバーのハードウェアまたはOSをアップグレードして新しいSMBバージョンをサポートするのが最善策です。古いバージョンのSMBを実行すると、基本的にトラブルを招くことになります。