こんにちは!今回は0xc000012fエラーでアプリケーションが起動できない時の対応事例を紹介します。
私が遭遇したケースでは、マイクロソフトオフィスをはじめとした色々なソフトウェアが全く起動しなくなってしまいました。
その際にポップアップされるエラーをよくよく見てみると、DLLファイルにエラーが含まれているというエラーメッセージが出ていました。
これを調査していくと意外と奥が深く、また発生する原因も様々でしたので、この機会にまとめてみました。
事象
アプリケーションを起動した際に「0xc000012f」エラーが表示されてしまい、起動してくれない。
[DLLへのフルパス]MSVCP140.dllはwindows上では実行できないか、エラーを含んでいます。元のインストールメディアを使用して再インストールするか、システム管理者またはソフトウェアの製造元に問い合わせてください。エラー状態 0x000012f
これが発生しているときは、Microsoft OfficeやOneDrive、AdobeのPhotoShopやIllustrator、NVIDIAのWeb Helper・・・等といったソフトウェアが起動できなくなってしまうようです。
また、MSVCP140.dllのほかにもさまざまなDLLを原因として発生するようです。
(c2rui.dll,adobe_caps.dll,VCOMP140.dll・・・など
原因
MSVCP140.dllはVC++2015ランタイムのdllファイルのようなので、そのファイルが破損してしまったのが原因と考えられます。破損してしまった原因は直前にWindowsUpdateを行っているので、その際に破損した可能性が高いと思われます。
ですが調べていくと、MSVCP140.dll以外のDLLエラーでも同様の0x000012fエラーを表示する様です。
となると、アプリケーションの起動ができないのはそのアプリケーションが利用しているDLLファイルが破損してしまったと考えるのが自然だと思います。
破損しているDLLファイルのパスをよく見てみると、%WINDIR%\System32\配下のファイルであることが分かります。するとこの場合、OSの持っているシステムファイルの破損であることが分かります。
解決方法
OSの上書き修復
私のケースではこの方法で修復できました。OSのインストールイメージを使って上書きインストールを行い、システムファイルを修復することができたようです。
DLLファイルが含まれるランタイムを更新する
DLLファイルの名前で検索をかけてみると、そのDLLファイルが含まれるランタイムパッケージを見つけることができます。
例えば、MSVCP140.dllはVC++2015の再頒布可能パッケージに含まれています。また、新しいランタイムパッケージをインストールしていても、使用しているソフトウェアが古ければ、やはり古いdllファイルを要求する場合もあります。
OSだけ新しく、インストールしたソフトが古ければインストールを行ってみるのも一つの手です。
ソフトウェアのインストーラをダウンロードしなおして再インストールする
DLLファイルは、通常インストーラーがに付属しているものが多いと思います。
上記で書かせていただいたDLLを含むランタイムパッケージもインストーラーに含まれている場合があります。
にも拘わらず起動が失敗するということは、インストーラーそのものが破損している可能性があるということになります。
最近はディスク同梱のパッケージ版ではなく、ライセンスキーのみが通知され、ソフトウェアはインターネットからダウンロードしてインストールするダウンロード版が主流になりつつあります。
それ自体は悪いことではありませんが、ダウンロードする環境や自身のコンピュータの状況に左右されてインストーラーが破損しないとは限りません。
一度インストーラーのダウンロードを最初からやり直し、再インストールや修復インストールを行うとよいかもしれません。
更新プログラムを適用する・削除する
WindowsUpdateを疑ってみるのも一つの方法です。
DLLはWindowsUpdateでも書き換えが発生します。WindowsUpdateでDLLが壊れてしまうという考え方もできますが、正常にシステムファイルが更新された結果、古いソフトウェアが動かなくなってしまうことはままあります。
そのため、直近にインストールされた更新プログラムを削除してみたり、新しい更新プログラムが公開されているのであれば新しいものを適用してみると、案外すんなりと起動できるようになるケースも多いです。
それでも改善されない場合
残念ながら他の原因があるのかもしれません。OSの修復や上書きインストールを試してみると良いかもしれません。
あとがき
今回は0xc000012fエラーでアプリケーションが起動できない時の対応方法を紹介させていただきました。
このエラーはDLLファイルを読み込めないために発生するものに思われます。DLLはダイナミックリンクライブラリというソフトウェアが便利に使える命令を固めたものです。動作するためには必ず必要なものですから、起動できないのも頷けます。
ここでは紹介しませんでしたが、ほかの正常に動いているコンピュータから同じ名前のDLLファイルを持ってきても直ることがあります。ですが、一つ直したところで結局ほかのDLLも壊れているというケースが非常に多いためオススメはできません。
私のケースではOSがもとから持っているDLLが壊れていたという結論でよさそうですが、インターネット上の様々な事例を見るに、ソフトウェアのインストール時に導入されるDLLが壊れているケースも多聞できます。多くのケースは紹介させていただいた方法でフォローできると思いますが、それでも直らないような事が起きたら教えていただけると嬉しいです。
何かのお役に立てれば幸いです。
コメント