web-dev-qa-db-ja.com

アプリケーションを「閉じる必要がある」または「動作を停止する」のはなぜですか。また、それに対して何ができますか?

アプリケーションを使用しているときに、次のエラーメッセージが表示されます(Windowsのバージョンによって異なります)。

Windows XP

[アプリケーション名]で問題が発生したため、終了する必要があります。ご不便をおかけしてしまい申し訳ございません。

Windows Vista、Windows 7、Windows 8

[アプリケーション名]が機能しなくなりました

その後、アプリケーションが閉じます。アプリケーションを「閉じる必要がある」または「動作を停止する」のはなぜですか。また、それに対して何ができますか?

6
manchester050 .

まず第一に、そのエラーはあなたのせいではありません。

一部のプログラマーは、プログラムのエラーを処理するのを忘れたため、失敗します。

もちろん、問題はhaveがアプリケーション自体にあることではありません(そのため、プログラマーはオフフックです)。 Windows、MSVCランタイム、.Netランタイム、ビデオカードドライバーなどにある可能性があります(そのため、サポートに連絡する前にすべての更新プログラムをインストールするように常に指示されます)。

だからあなたはすべてをカバーしましたが、問題は解決しません。今何?

さて、今残っているのは、問題のアプリケーションに欠陥があり、プログラマーがこのアプリケーションのフックから外れていないことです(A-HA!)。つまり、それはソフトウェアの作者の問題です。だから彼らに連絡し、彼らがあなたを助けてこの問題を修正できるかどうか尋ねてください。

しかし、彼らが彼らのソフトウェアが完璧であると私に言った場合、その問題を抱えているのは私だけであり、一般的に、それは私のせいですか?

ここからが楽しい部分です。エラーメッセージのactual原因を見つけることができます。
アプリケーションは、オペレーティングシステムを実際に動かしたオペレーティングシステムに「あなたはf-をシャットダウンする必要があります!」と実際に何を伝えましたか?

そうするために、あなたはあなたの処分で多くのツールを持っています。

  • ログファイル
  • Windowsイベントログ
  • プロセスモニター

問題のアプリケーションがログファイルを書き出す場合、それらはアプリケーションの問題の原因を探すために金になる可能性があります。それらを読んで、考えられるエラーメッセージについてここで議論してください。

Windowsイベントログには、クラッシュしたアプリケーションに関する情報が確実に含まれています。それが実際に.Netアプリケーションである場合は、運が良ければ、ログからコールスタックをプルできる可能性があります(これは開発者にとって非常に役立ちます)。

他のすべてが失敗した場合は、 Process Monitor に切り替えます。 Process Monitorは、アプリケーションとオペレーティングシステム(いわば)間の通信をログに記録するツールですall。その結果、キャプチャされたデータでは、アプリケーションが呼び出した関数のうち、ハンドルされていないエラー状態になったものを正確に確認できます。これは、存在しないファイルまたはレジストリオブジェクトにアクセスしようとするような些細なことかもしれません。しかし、ログで1回の呼び出しを見つけるには時間がかかる可能性があり、ソフトウェア開発の経験がない場合は、このアプローチをあまり理解できない可能性があります。

それで「まあ、それが私の問題を解決するのに役立つ可能性はほとんどありません。」なら、おそらくあなたは正しいでしょう。このような問題を特定の人に試して追跡するのは楽しいかもしれませんが、通常は、障害のあるソフトウェアを作成した人の仕事です。

彼らはあなたよりもはるかに問題を見つけるための設備が整っています。適切なバグレポートは時々長い道のりを行くことができます。

5
Der Hochstapler

以前のバージョンの.NETFrameworkをアンインストールし、4.0をインストールしました

これを実行しない、あなたは.NETフレームワークをアンインストールすることをしない。これらのバージョンの背後にある考え方は、Microsoftが.NET Frameworkを改善して変更すると、以前の.NETバージョンで開発されたプログラムの互換性が損なわれる可能性がある(そしてしばしばそうなる)ということです。

この問題を回避するために、新しいバージョンの.NETがリリースされ、他のバージョンと並べてインストールできます。 Windowsはそれらを正しく管理し、プログラムが要求しているバージョンをロードします。これにより、新旧両方のプログラムを問題なく実行できます。

繰り返しますが、アプリケーションが.NET 3.5用に設計されている場合、他の.NETバージョンで確実に実行することは期待できません。

あなたのコメントの1つに「以前のバージョンの.NETをアンインストールする前は常にカスタムソフトウェアが機能していた」とあるので、先に進み、再インストールすることをお勧めします。これを行う最も簡単な方法は、アプリケーションを再インストールすることです。通常、アプリケーションには、必要な適切な.NETインストーラーが含まれています。

4
mtone

私の答えに対するあなたの最後のコメントに答えて、私はあなたに正確な解決策を提供するのに十分な情報がないことにほとんどの人が同意すると思います。

.NETの再インストールは知識に基づいた推測でしたが、クリーンアップユーティリティが削除した他のファイル/レジストリエントリと、どれが重要であったかはわかりません。

私の最初の答えは:アプリケーションを再インストールしても問題が解決しない場合は、ベンダー/開発者に連絡して解決してください。ベンダーは、アプリケーションの起動時にどのファイルが期待されるかを知っていますが、私たちは知りません!

次に、プロフィールで、スタックオーバーフローに質問を投稿し、Cドライブに「kbがほとんど残っていない」ことを示していることに気付きました。これにより、おそらくクリーンアップが開始されました。ええと、あなたが知っている、それは私があなただったら私が修正しようとする最初のことだろう。常に少なくとも1GBの空き容量があることを確認する必要があります。

数MBの空き容量が問題を引き起こしており、Windowsまたはアプリケーションによって容量を割り当てようとすると、「Need to close」エラーが発生する可能性があります。また、極端なクリーンアップの必要性を回避し、重要なファイルを誤って削除するのに役立ちます。

したがって、私の2番目の答えは:新しい(または別の)より大きなメインハードドライブをできるだけ早く入手します。それでもアプリケーションがクラッシュする場合は、Windowsとその上のすべてのアプリケーション/ドライバーを再インストールする必要があります。これは大変な作業ですが、最終的には問題に対する優れた解決策です(読んでください:ほとんど間違いなく修正されます)。

最後に、クリーンアップユーティリティは公式のユーティリティではありません。 Windowsはものを蓄積する傾向があるのは事実ですが、クリーンアップユーティリティがそれを取り除くのに良い仕事をしていることは議論の余地があります。 Windowsの成長のほとんどは、ライブラリ(DLL)、更新プログラム、およびインストールされているさまざまなアプリケーションによるものであり、ユーティリティはとにかくあまり多くのことを台無しにしようとすべきではありません。一時フォルダは、手作業で簡単にクリーンアップできます。多くの場合、実行できる最善のクリーンアップは、絶対に必要ではないアプリケーションをアンインストールすることです。ご存知のように、ほとんどのクリーンアップツールは、クリーンアップするものよりも多くの膨張を追加します。インストールしたマルウェア対策の膨大なリストも、目前の仕事にはやり過ぎのようです。

つまり、私の3番目の答えは:将来の片付けを簡単にします。ディスク容量は十分に安いため、この問題をすべて回避して数メガバイトを節約できます。

未使用のアプリケーションをアンインストールし、「TEMP」フォルダを手動で削除することをお勧めします。できるだけ多くのアプリケーションをインストールして試してみるのは避けてください。これは、元に戻すのが難しい不必要なウィンドウの成長につながるためです。理想的には、1つの優れたアンチウイルス、1つの優れたマルウェア対策、および作業に必要なものすべてに固執します。レジストリをいじらないでください!

3
mtone

「アプリケーションで問題が発生したため、閉じる必要があります。ご不便をおかけして申し訳ありません。」

これは常に、プログラムが安全に続行できないことを意味する何かを実行しているアプリケーションへの応答です。

  • プロセスの問題が非常にひどく失敗し、プロセスを続行するのは安全ではありません(これは通常、ヒープオーバーフローまたはダブルフリーの脆弱性がトリガーされたことを通知するヒープです)。

  • プログラムは、そこにないメモリ、または操作が無効なメモリ(DEPがスタックでのデータの実行を停止するなど)の読み取り、書き込み、または実行を試みました。

  • プログラムが例外をトリガーし、登録されたハンドラーはそれを処理する方法を知りませんでした。

ダイアログボックスはWindowsであり、プログラムのクラッシュダンプがWindowsエラー報告サービスに送信される間に、プログラムが制御不能な方法で終了したことを通知します。これらのクラッシュダンプは、プログラムの開発者がバグを修正するために表示できます。

これは、ウイルスに攻撃されたことを示すものではありません。これは、プログラムに欠陥があることを示しています。唯一の解決策は、プログラムの元の開発者に(WERを介して)クラッシュダンプを送信し、バグが修正されたら修正されたバージョンに更新することです。

1
SecurityMatt

まず、エラー(Some program application) has encountered a problem and needs to close. We are sorry for the inconvenience.は完全に一般的なWindowsエラーメッセージです。開発者がエラーを説明しなかったため、 '(Some program)が機能しなくなった場合は、エラーID10-Tメモリスタック 'の場合、一般的なエラーは実際には必要ありません!

残念ながら、開発者とソフトウェアエンジニアは、プログラムが予期せずクラッシュする原因となる可能性のあるすべてのことを説明することはできません。はい、「何か」を意味する乱数をスローする「優れた」エラー処理メソッドを備えたプログラムがいくつかありますが、それを取得するために、開発者がその特定のエラーを説明したことを意味します。

一般的なメッセージが表示される理由は、次のようなものです。

  • 一般的なメモリまたはリソースアクセスエラー( セグメンテーション違反
  • 不適切なアンチウイルス設定(プログラムへのアクセスを禁止する)
  • 互換モードエラー(別のWindowsバージョンの互換モードでアプリケーションを実行してみてください)
  • 開発者による不十分なコーディングプラクティス、または不十分なバグスカッシュ/テスト
  • アプリケーションで使用されているWindowsの減価償却済みAPI呼び出し
  • 依存関係(他のフレームワーク、DLL、共有リソース)が最新でないか、利用できない
  • などなど

エラーが発生する理由のさまざまな可能性をリストする方法は実際にはありません。問題を「修正」する最善の策は、ソフトウェア開発者に確認し、システムライブラリ/リソースが完全に最新であり、アプリケーションベンダーの指定した要件と互換性があることを確認することです。

1
PenguinCoder

Soluto のようなプログラムを使用してみてください。このプログラムは、クラッシュを検出し、問題が利用可能な場合はそれを修正する方法についてアドバイスを提供します。 Solutoは、クラウドソーシングを使用してクラッシュを検出し、修正を提供します。

0
bbodenmiller

通常、これはプログラムで例外が発生したことを意味します(これはプログラムをクラッシュさせるエラーです)。このエラーの原因はアプリケーションによって異なるため、何が問題になっているのかを正確に特定することは困難です。

一般的な解決策は、プログラムを再インストールするか、一時ファイルを削除することです(クリーンアップユーティリティがそれらをキャッチしない場合があります)。おそらく、ユーザーアカウント制御に関連する例外が発生するため、プログラムを管理者として実行してみてください(右クリックして、管理者として実行)。一部のプログラムでは、DEP(Data Execution Protection、セキュリティシステム)によっても発生します。 This ページでは、プログラムで無効にする方法について説明しています。

このプログラムがアクセスできない場所にファイルを書き込もうとする可能性もあります。実行しているプログラムに書き込み権限(右クリック、プロパティ、セキュリティ)を付与してみてください

また、Windowsの最新の更新プログラムとその特定のプログラムがインストールされていることを確認してください。

0
Simon Verbeke