Windows Visual C ++ランタイムエラーを修正する方法

Windows Visual C ++ランタイムエラーを修正する方法

Windowsの共有ライブラリは、一般的なタスクを実行する必要があるたびに車輪の再発明を行う必要がないプログラマーにとって、プログラミングをはるかに効率的にします。また、共有コードが見つかったときに、より少ない場所でパッチを適用する必要があり、すべてのアプリケーションを再コンパイルする必要がないため、セキュリティホールを簡単に塞ぐことができます。





これらの肯定的な側面にもかかわらず、生成される可能性のあるエラーメッセージの根本原因のトラブルシューティングを試みると、独自の問題が発生する可能性があります。





読者の質問:

Dell Inspiron530でWindowsVista 32ビットC: Windows explorer.exeの問題を修正するにはどうすればよいですか?





スクリーンショットに示されているダイアログで[OK]ボタンをクリックすると、画面が真っ暗になり、通常の実行に戻りますが、C、D、および場合によってはEドライブにアクセスしようとするとアクセスできなくなります。マイコンピュータから。

ランニング sfc / scannow エラーは見つかりません。この問題を解決するために、DellとMicrosoftの両方のWebサイトからアップデートをダウンロードしました。また、Microsoft Visual C ++ 2010再頒布可能パッケージ(x86)もインストールしました。 Windows Updateによると、PCは完全に最新です。



ブルースの返信:

注:Windows7以前のバージョンのWindowsエクスプローラーに関する説明は、Windows8以前のバージョンのファイルエクスプローラーにも適用されます。それらの間に顕著な違いがある場合、それは明示的に述べられます。

Windowsシェル

ウィンドウズ・エクスプローラ シェルであり、タスクマネージャーまたはSysinternalsのProcess Explorerに表示されるように、explorer.exeプロセスとして実行されます。他の多くのWindowsプログラムと同様に、シェルによって提供されるすべての機能がその単一の実行可能ファイルに組み込まれているわけではありません。プロパティシート、プロパティハンドラー、プレビューハンドラー、コンテキストメニュー、およびWindowsエクスプローラーで毎日使用する他の多くの要素を実装するために使用される他の数十のEXEファイルとDLLファイルがあります。





拡張可能なシェル

シェル拡張機能を使用すると、プログラマーはタスクを実行するDLLを記述し、オペレーティングシステムにDLLを登録することで、Windowsエクスプローラーに機能を簡単に追加できます。これにより、エクスプローラーはタスクを実行するためのコードの場所を認識できます。例えば、 7-Zip 標準のコンテキストメニューにサブメニューを追加して、アーカイブ処理タスクにすばやくアクセスできるようにします。HardDiskSentinelは、標準のドライブアイコンにアイコンオーバーレイを追加して、ドライブの状態を一目で確認できるようにします。 HashTab 選択したファイルのハッシュを計算して表示するために、新しいプロパティシートを追加します。

これらのシェル拡張機能の多くは、インプロセスコンポーネントオブジェクトモデル(COM)サーバーとして実装されています。これは、プロセス(この場合はWindowsエクスプローラー)が拡張機能を使用する場合、タスクマネージャーまたはプロセスエクスプローラーに、独自のプロセス識別子(PID)を持つ個別の実行中のプロセスとして表示されないことを意味します。代わりに、呼び出し元のexplorer.exeプロセス内で実行されます。





デフォルトのシングルインスタンスプロセス

Windowsエクスプローラーは、2つの別個のプロセスとして実行できるように作成されていますが、デフォルトの構成では、単一のインスタンスのみを実行します。起動プロセスの一部として最初に実行されると、Windowsデスクトップ環境が作成されます。再度実行すると、既存のプロセスに新しいスレッドが作成され、新しいプロセスを開始する代わりに、使い慣れたファイル管理ウィンドウが表示されます。

この動作により、メモリフットプリントを削減できますが、問題のトラブルシューティング時に独自の工夫を加えることもできます。 DLLによって提供されるインプロセスサーバーを含む、explorer.exeプロセスで実行されているコードの重大なエラーまたは未処理の例外により、デスクトップ環境全体がダウンします。

ほとんどの場合、デスクトッププロセスは自動的に再起動されます。再起動しない場合でも、Ctrl-Shift-Escを使用してタスクマネージャーを起動できます。そこから、 ファイル>新しいタスク(実行…)> タイプ explorer.exe> OK プロセスを再開します。

これは、簡単な変更で回避できます。開ける Windowsエクスプローラー>整理>フォルダーと検索オプション Vista / 7で。 Windows 8以降の場合は、 ファイルエクスプローラー>表示>オプション>フォルダーと検索オプションの変更 。を選択 タブを表示 とチェック 別のプロセスでフォルダウィンドウを起動する

オンラインで無料の映画を見る登録なし

この設定を変更すると、デスクトッププロセスが開いている他のすべてのWindowsエクスプローラーウィンドウから分離されます。これらのエクスプローラウィンドウのいずれかがクラッシュした場合、デスクトップは無傷のままになります。

Microsoft Visual C ++ランタイムライブラリ(CRT)

Microsoft Visual C ++ランタイムライブラリは、入出力、ファイル操作、メモリ割り当て、システムコールなど、多くのタスクを自動化するWindowsプログラミング用のルーチンを提供します。

すべてのWindowsインストールには、少なくとも2つの異なるバージョンのCRTがインストールされます。 Windows10マシンを介して新しく構築されたVistaSP2には、バージョン8.0と9.0(それぞれ、VC2005とVC2008)の両方が存在します。追加のソフトウェアがインストールされると、プログラムまたはそのコンポーネントの作成に使用されたVisual C ++のバージョンによっては、ランタイムの最新バージョンが含まれる場合もあります。

ランタイムエラー

コードの一部でエラーまたは例外が発生した場合、理想的には、現在実行中のプロシージャでできるだけ早く処理され、修正されるか、正常な障害が発生する可能性があります。エラーがローカルで処理されない場合、エラーは現在実行中のコードを呼び出したコードに渡され、例外が処理されるまでプロセスが続行されます。チェーンの最上位までの実行が完了しても処理されない場合は、上記のようにランタイムエラーが生成されます。

ユーザーが[OK]ボタンをクリックすると、プロセスは終了します。プログラムに重要なサービスなどの定義された障害動作がある場合、またはその実行状態が別のプロセスによって監視されている場合、プログラムは自動的に再生成される場合があります。これがこの場合に起こっていることです。 explorer.exeプロセスが終了すると画面が真っ暗になり、explorer.exeプロセスを再起動するとデスクトップに戻ります。

上記のエラーメッセージは、それがexplorer.exeプロセスからのものであることを明確に示していますが、explorer.exe自体に問題がある可能性は低いです。 Explorerが使用しているサードパーティの拡張機能など、他の場所に原因がある可能性がはるかに高くなります。

その他の考慮事項

上記の問題についての読者の説明では、考慮に入れる必要のある追加の項目がいくつかあります。

  • クラッシュの時点で、Explorerはリストビューにデータを入力しようとしましたが、できませんでした。
  • デスクトップが再生成された後にドライブにアクセスできないことは、別のプロセスがそれらのデバイスの1つ以上をロックしていることを示している可能性があり、それによって新しく作成されたexplorer.exeプロセスからのアクセスが妨げられます。
  • ランニング sfc / scannow そして、クリーンな健全性を取得し、Windowsで保護されたリソースを検討のためにリストの一番下にドロップします。他の原因がはるかに可能性があります。

修正があります

この特定のケースでは、私が解決策を探す3つの領域があります。 1つ目はWindowsSearchサービス、2つ目はシェル拡張機能の調査、最後はVC ++再配布可能ファイル自体です。

元のスクリーンショットは、エクスプローラーがリストビューにデータを入力しようとしたときに発生したクラッシュを示しているため、WindowsSearchサービスが必要なリソースへのアクセスをブロックしている可能性があります。これは、サービスがクラッシュし、正しい再起動パラメーターがない場合に発生することを確認しました。

押す Win + R> タイプ services.msc> OK サービスモジュールを使用して管理コンソールを起動します。 Windows Searchまで下にスクロールし、エントリをダブルクリックして[プロパティ]ダイアログを開きます。 [リカバリ]タブの設定が下の画像と一致していることを確認してください。

最も一般的な問題は、「次の後にサービスを再開する」設定です。このエラーは、この設定がゼロ以外の場合に頻繁に発生します。

問題のあるシェル拡張

ダウンロード NirsoftのShellExView システムアーキテクチャ(x86またはx64)の場合は、インストールして実行します。システムを調べてテーブルにデータを入力するには、少し時間がかかります。 [CLSID変更時間]列までスクロールし、ヘッダーをクリックしてこのフィールドで並べ替えます。 Microsoftが提供するモジュールを除外する場合は、次のURLにアクセスしてください。 オプション>すべてのMicrosoft拡張機能を非表示 。 64ビットバージョンのWindowsを使用している場合は、次のURLにアクセスして、システムに32ビット拡張機能を表示することもできます。 オプション> 32ビットシェル拡張機能を表示

症状が始まる直前に追加された拡張機能を探します。 1つ以上を選択し、を押します F7 またはに行く ファイル>選択したアイテムを無効にする 、またはツールバーの赤いLEDアイコンをクリックします。理想的には、これは一度に1つずつ実行する必要があります。

症状が続くかどうかをテストします。含まれている場合は、を使用して以前に無効にした拡張機能を再度有効にすることができます F8ファイル>選択したアイテムを有効にする 、または緑色のLEDツールバーアイコン。ここから、別の拡張機能を無効にし、問題の原因となっている拡張機能が見つかるまでテストプロセスを繰り返します。

VC ++再配布可能ファイルの修復/再インストール

1つのプログラムだけがエラーを発生させている場合、私はこれを最後の手段として使用します。 VC ++ランタイムエラーで問題が発生しているプログラムが複数ある場合は、最初にこれを試してみてください。

私のシステムにインストールされているプログラムを見るとき( コントロールパネル>プログラムと機能 )、バージョン8からバージョン12(VC ++ 2005からVC ++ 2013)までの再配布可能なパッケージのすべてのバージョン(およびそれらの更新の一部)が表示されます。私が使用しているMicrosoftプログラミングツールのために、それらをインストールしています。ほとんどのユーザーはこれらすべてを持っているわけではありません。

あなたは見つけることができます サポートされているバージョンのVisualC ++の最新のダウンロード マイクロソフトから。ここでの目的のために、「再配布可能」パッケージとしてラベル付けされているものだけに注意する必要があります。サービスパックとして分類されるリンクは、単なるランタイムではなく、プログラミングツール用です。システムにインストールされているプログラムに現在リストされているものだけが必要になります。この場合、他のバージョンをインストールしても役に立ちません。 64ビットオペレーティングシステムのユーザーは、CRTのx86バージョンとx64バージョンの両方が必要になる場合があります。

Windows Updateは、コンピューターにこれらのパッケージの最新の更新プログラムがインストールされているかどうかを確認しますが、正しくインストールされており、壊れていないことを確認しません。インストーラーは、すべてのランタイムファイルが適切なファイルであり、すべてのレジストリエントリが正しいことを確認できます。

適切なインストーラーをダウンロードしたら、システムで実行します。 2005バージョンでは、パッケージを再インストールする前に、使用許諾契約に同意するように求められます。他のすべてには、既存のインストールを修復またはアンインストールするかどうかを尋ねるGUIがあります。ほとんどの場合、修復操作で問題が修正されます。

最も極端な方法を試したい場合は、ランタイムをアンインストールし、マシンを再起動してから、再インストールすることができます。 2005および2008ランタイムではこの方法をお勧めしません。それらがないと、Windowsは多くのエラーを生成し、再起動時に多くの機能が提供されません。

結論

少し観察し、少し試行錯誤し、システムのランタイムからエラーがどのように生成されるかをある程度理解することで、複雑なデバッグツールやログに頼ることなく、ソフトウェアの問題を見つけて解決できます。

システムでランタイムエラーが発生しましたか?それらを解決するために何が必要でしたか?以下のコメントで教えてください。

共有 共有 つぶやき Eメール FBIがHiveランサムウェアに対して警告を発した理由は次のとおりです

FBIは、特に厄介なランサムウェアについて警告を発しました。これが、Hiveランサムウェアに特に注意する必要がある理由です。

次を読む
関連トピック
  • ウィンドウズ
  • テクノロジーの説明
  • 専門家に聞く
  • ウィンドウズ・エクスプローラ
  • ウィンドウズ
  • ファイルエクスプローラー
  • Windowsサーチ
  • トラブルシューティング
著者について ブルースエッパー(13件の記事が公開されました)

ブルースは70年代から電子機器、80年代初頭からコンピューターで遊んでおり、彼がずっと使ったことも見たこともないテクノロジーについての質問に正確に答えています。彼はまたギターを弾こうとして自分自身を悩ませます。

ブルースエッパーのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください