あるアプリケーションを開こうとしたら、何をやっても開こうとしない。タスクマネージャーですでに起動していないか確認しても、どこにも見当たらない。どうなっているのだろう?
問題
シナリオにもよりますが、特定のプロセスがそのファイルを使用しているために削除できないファイルや、応答がないために強制終了が必要だったアプリケーションが、今では開かなくなっている可能性があります。これで問題を解決できるはずです。
ソリューション
管理者権限を持っている場合は、スタートメニューを開き、以下を実行する。 コマンド を管理者として選択します。この画面が表示されます。
その画面に到達したら タスクリスト コマンドを実行します。これで、コンピューター上で現在実行されているタスクやプロセスがすべて表示されるはずです。
この例では、動かなくなったMicrosoft Excelのプロセスを終了させます。特定できるプロセス名を見つけるまで、プロセスを検索します。新しいプロセスはこのリストの下の方に表示される傾向があるので、最近そのアプリケーションを開こうとしたのであれば、見つけるのはそれほど難しくないはずです。
プロセスが見つかったら、その横に表示されている数字に注目する必要がある。探している数字はプロセスIDで、どのアプリケーションを終了させる必要があるかをWindowsに伝える重要なものだ。
先に進んで タスクキル /pid /f
ここでは、プロセスIDに基づいて、特定のタスクを強制終了するよう Windowsに指示している。プロセスIDを指定し、最後に/fをつけるのは、万が一プロセスが立ち往生した場合に備えて、コマンドに強制的にタスクを終了させるためである。実際には、最終的なコマンドは次のようになる。
プロセスIDを探す代わりにプロセス名を使いたい場合は、以下のように置き換える。 /ピッド をもって /イム (/imは画像名)の後にプロセス名を付けても動作する:
Enterキーを押し、すべてがうまくいけば、タスクは終了するはずである。タスクが正常に終了したかどうかは、Windowsが教えてくれる。
必要に応じて、このプロセスを繰り返す。問題が発生している製品のプロセスが複数ある場合は、先ほどの方法を繰り返すか、プロセスのイメージ名を指定する方法を使用します。
なぜこのようなことが起こるのか?
指を指してすぐにウィンドウズのせいにするのは簡単かもしれないが、この質問には正解も不正解もないので、必ずしもそう簡単ではない。プロセスがこのような宙ぶらりんな状態に陥る原因には、さまざまなことが考えられる。
ソフトウェアのバグや不具合
一般的に、このようなことが起こる原因は、ソフトウェア開発者がその特定の条件を考慮しなかったために、ソフトウェア自体が誤ってシャットダウンしてしまうことにある。
このフローと以前のフローとの主な違いは、手動トリガーを使わなくなったことに加え、このフローには、メッセージ内の添付ファイルが最初のものだけでなく、すべて封印されるようにするサイクルがあることだ。
リソースロック
このアプリケーションは、ファイルやシステムリソースを開いている可能性があり、何らかの理由でウィンドウズやアプリケーションがそのロックを解放できず、終了要求が行われた後でも実行中のままになっています。これは通常、不適切に処理されたI/O操作で発生し、アプリケーションはシャットダウンする前に操作が完了するのを待っているのですが、このプロセスが立ち往生し、終了要求がいつまでも実行されたままになります。
第三者による妨害
可能性は低いが、それでもこの現象が起こる原因として考えられるのは、サードパーティのソフトウェアだ。外観を変更するシステム・トゥイーカーや、Windowsの従来の機能を変更するシステム・パフォーマンス・ブースター、あるいはウイルス対策ソフトなど、これらはすべて、アプリケーションが意図したとおりに機能しない原因になる可能性があります。
コンピュータの性能があまり高くない場合や、コンピュータが提供するシステムリソースをすべて使用している場合、システムが高負荷にさらされると、アプリケーションの動作がおかしくなり、アプリケーションを効果的に管理できなくなる可能性があります。
不適切なアプリケーション設計
アプリケーションが最適化されていなかったり、複雑すぎたりして効率的に実行できないことがあります。複数のスレッドを生成し、適切な管理を行わないアプリケーションが、メイン・アプリケーション・ウィンドウを閉じた後もこれらのエンティティを実行したままにすることは、前代未聞のことではありません。
廃止されたプロセス
プロセスが消滅することは珍しいが、前代未聞ではない。これは通常、親プロセスと子プロセスの不一致が起こり、親プロセスにこのイベントが正しく通知されないまま子プロセスが終了し、その結果、子プロセスが収集されないままになってしまうために起こります。
このような現象が発生する理由は数え切れないほどありますが、ソフトウェアやオペレーティング・システムを常に最新の状態に保つことは、既知のバグや互換性の問題の修正が含まれていることが多いため、良い習慣です。
著者について
記入例 マッテオ・ジョルダーニ,ソリューションアーキテクト Connecting Softwareにて。
"Connecting Softwareのソリューション・アーキテクトとして、日々使用するツールのちょっとした複雑さを知っておくことは重要です。私は、このような珍しい情報を皆さんと共有できないかと考えました。もしこれが少なくとも一人の人の助けになるのであれば、書く価値があると思う。"