ゲーム起動時の「Bad Image・0xc000012f」の直し方|表示されたDLLの場所で対処を分ける
本記事にはアフィリエイト広告(Amazon・楽天市場等)のリンクが含まれています。
表示されたDLLの場所で確認先を分ける
ゲーム起動時に「Bad Image」「正しくないイメージ」と表示され、末尾に 0xc000012f が出ることがあります。DLL名だけを検索して見つけたファイルを置くと、読み込み先や配布元を取り違えるおそれがあります。
まずエラー画面のDLLのフルパス、ファイル名、エラーコードを控えてください。ゲームのインストール先ならゲームファイル、ランタイムなら公式パッケージ、Windowsの保護対象ファイルならWindows修復、GPU関連ならメーカーのドライバー手順を先に確認します。
パスは調査の優先順位を決める手がかりです。ゲームフォルダー内に外部ランタイムがある場合も、Windowsのフォルダーに他社製ファイルがある場合もあるため、パスだけで原因を確定しません。
目次
最初の確認エラー画面の3点を控える
- 画面を閉じる前にスクリーンショットを撮り、
0xc000012f、DLLのファイル名、C:\...\file.dllのようなフルパスを控えます。共有時はユーザー名などを隠してください。 - 直前にゲーム、Windows、GPUドライバーのどれを更新したかを控えます。一つのゲームだけか、複数のゲームで同じDLLが出るかも確認します。
- ファイルを確認する場合も、DLLを削除・移動・上書きしないでください。
C:\Games\ExampleGame\bin\sample.dll と 0xc000012f が表示された場合、末尾の sample.dll がファイル名、手前の C:\Games\ExampleGame\bin\ が場所です。まずゲーム内のファイルを検証し、改善しなければこのDLLの配布元を調べます。この例は実際のエラー画面や特定ゲームの不具合を示すものではありません。
MicrosoftのNTSTATUS仕様では 0xc000012f は STATUS_INVALID_IMAGE_NOT_MZ、0xc000007b は STATUS_INVALID_IMAGE_FORMAT です。前者はファイルの先頭にMZがないという形式上の状態を表しますが、どの修復策が効くかまでコードからは決まりません。MicrosoftのNTSTATUS仕様
分岐DLLの場所と配布元で最初の対処を選ぶ
同じ名前のDLLが複数の場所に存在することがあります。WindowsはDLLをフルパスで指定しない場合、条件に応じた順序で検索します。表示されたパスとファイルのプロパティの「詳細」「デジタル署名」、ゲームやドライバーの公式案内を照合してください。MicrosoftのDLL検索順序
...\Games\ゲーム名\... などなら、まずそのゲームのファイルを検証します。同じ場所にランタイム同梱ファイルもあり得るため、改善しなければ配布元を確認します。VCRUNTIME140.dll、MSVCP140.dll、XINPUT1_3.dll などなら、ゲームの要求する世代を調べ、Microsoftまたはゲーム付属の正規インストーラーを使います。C:\Windows\System32\... などなら発行元を確認します。Windowsの保護対象ファイルと判断できる場合にDISM、続いてSFCを使います。ゲーム内ゲームフォルダーのDLLならファイルを検証する
Epic Games Launcherでは、ライブラリで対象ゲームの「…」から「管理」→「確認」を選びます。Epic Gamesは、異なるゲームファイルを変更・修復し、セーブデータには影響しないと案内しています。Epic Gamesの整合性確認手順 Steamなどを使う場合も、そのランチャーの公式手順で対象ゲームを検証してください。
SteamではPCとSteamを再起動し、ライブラリの対象ゲームを右クリック、またはゲームのページの歯車を開いて「プロパティ」→「インストール済みファイル」→「ゲームファイルの整合性を確認」を選びます。Steamの公式手順
検証後に同じエラーが出るなら、パスとDLL名をもう一度確認します。ランタイムをゲームが同梱している場合は、ゲームのサポートが指定するセットアップを実行します。複数のゲームが同時に失敗するなら、共通して使うランタイムやGPUドライバーを先に調べてください。
ランタイムVisual C++・旧DirectXは公式パッケージで修復する
Visual C++のDLLが表示された場合
ゲームのサポート情報や付属インストーラーで必要なVisual C++の世代を確認します。Microsoftの再頒布可能パッケージ一覧から対応するものを入手し、既に入っている場合は修復を試します。x86/x64はWindowsの表示だけで選ばず、ゲーム側の対象アーキテクチャに合わせます。世代が不明ならゲームのサポートへ表示パスを伝えて確認してください。
古いDirectXのDLLが表示された場合
XINPUT1_3.dll や D3DX9_*.dll など、旧DirectX SDKの追加ライブラリを使うゲームでは、MicrosoftのDirectX End-User Runtimeが候補です。このパッケージは旧ゲーム向けのライブラリを追加し、Windows本体のDirectXのバージョンは変更しません。DLL名とゲームの要件を照合してから実行します。
Windows保護対象のシステムファイルならDISMからSFCへ
Windowsの保護対象ファイルに問題があると考えられる場合は、Windows Updateを確認して再起動し、管理者としてコマンドプロンプトを開きます。Microsoftが案内する順序は次のとおりです。Microsoftのシステムファイル修復手順
DISM.exe /Online /Cleanup-image /Restorehealth
sfc /scannow
DISMの完了後にSFCを実行します。SFCが対象にするのはWindowsの保護対象システムファイルです。MicrosoftのSFCコマンド資料 表示されたDLLが他社製なら、この手順だけで修復できるとは限りません。完了後も同じパスが出る場合は発行元のソフトウェアへ戻ります。
GPUGPU関連ファイルならメーカーの配布手順を使う
GPUドライバー由来と判断できるときは、使っているGPUとPCメーカーの案内を確認し、対応ドライバーを公式経路から入手します。GeForceはNVIDIA App、RadeonはAMDのインストール手順、Intel製GPUはIntelの再インストール手順を確認できます。更新後は再起動し、同じパスが出るか確かめます。
クリーンインストールやAMDの「Factory Reset」は変更範囲が広いため、最初から選ばず、メーカーの説明で影響を確認してから判断してください。
直らない場合同じエラーが続くときの確認先
- 修復前後で、表示されたDLLのフルパスとコードが同じか比べます。別のファイルに変わったら、新しい表示を起点に分岐を選び直します。
- 一つのゲームだけなら、ゲームのサポートへゲーム名・バージョン、表示パス、整合性確認の結果を伝えます。複数のゲームなら、共通するDLLの発行元と最近のWindows/ドライバー更新を調べます。
- DLL単体配布サイトのファイルをゲームフォルダーや
System32にコピーしないでください。WindowsにはDLL検索先に置かれた別のファイルを読み込む危険があります。MicrosoftのDLLセキュリティ資料
FAQよくある質問
0xc000007b の場合は0xc000007bの起動エラーの手順へ進みます。まとめDLLのパスを控え、配布元の公式手順で修復する
0xc000012f だけで破損箇所は特定できません。ゲーム内なら整合性確認、ランタイムなら公式パッケージ、Windowsの保護対象ならDISMとSFC、GPU関連ならメーカーのドライバー手順を選びます。修復後に表示パスが変わったら、新しいパスから判断し直してください。

