Windowsでアプリケーションが応答しなくなったときは、tasklistで対象を確認し、taskkillで終了を試せます。ローカルのプロセスを強制終了する指定は/Fです。ただし、保存していない作業が失われるおそれがあるため、最初から強制終了するのではなく、保存・通常の終了・対象の再確認という順で進めましょう。
この記事は、自分が操作・管理するローカルのWindows PCを対象にしています。コマンド例の「確認したPID」「対象アプリ.exe」などは置き換え用の表記です。そのまま入力せず、実行直前に確認した対象の値へ置き換えてください。
終了する前の確認とコマンドプロンプトの起動
- 操作できるアプリでは作業を保存し、通常の「閉じる」「終了」を先に試します。応答しないアプリについては、未保存データを失う可能性を踏まえて判断します。
- 終了対象が自分の目的のアプリか、他の作業や利用者に影響しないかを確認します。用途が不明なプロセス、Windowsの重要なプロセス、セキュリティ製品のプロセスは対象にしないでください。
- スタートメニューで「cmd」または「コマンドプロンプト」を検索して開きます。最初から管理者として実行する必要はありません。Windows ターミナルを使う場合は、コマンドプロンプトのタブを選びます。
- 権限不足と判明し、そのプロセスを管理する権限もある場合だけ、管理者として開き直すことを検討します。管理者権限や強制終了オプションが、すべてのプロセスの終了を保証するわけではありません。
以降の終了コマンドは、アプリ内の保存処理を代行しません。/Fを付けない場合でも、未保存データが必ず保護されるとは考えないでください。
tasklistで現在のプロセスを確認する
全体の一覧と名前による絞り込み
tasklist表示されたイメージ名、PID、セッションなどを確認します。イメージ名で絞り込むと、候補を探しやすくなります。以下は表示だけを行う例で、プロセスを終了しません。
tasklist /FI "IMAGENAME eq chrome.exe"
tasklist /FI "IMAGENAME eq excel.exe"Chromeなどのアプリでは、同じ名前で複数のプロセスが表示されることがあります。名前が同じだからといって、どれを終了してもよいわけではありません。特定のタブや文書とPIDが一対一で対応するとも限らないため、対象を判別できなければ、ここで操作を止めます。
詳細情報とウィンドウタイトルを確認する
tasklist /V /FO LIST /FI "IMAGENAME eq excel.exe"/Vは詳細情報、/FO LISTは一覧形式の指定です。表示されるユーザー名やウィンドウタイトルなどを、開いているアプリと照合してください。タイトルが取得できない場合もあり、タイトルだけでは対象を確定できません。
tasklist /V /FI "WINDOWTITLE eq 実際に表示されたウィンドウタイトル"ウィンドウタイトルでの絞り込みでは、実際の表示に合う値を使います。「Budget.xlsx – Excel」などの固定文字列が、すべての環境で一致するとは限りません。WINDOWTITLEフィルターはリモート指定では利用できません。オプションとフィルターの詳細は、Microsoftのtasklistリファレンスを参照してください。
PIDは実行直前に再確認する
tasklist /V /FO LIST /FI "PID eq 確認したPID"PIDを控えておいて後日そのまま使うのは避けます。プロセスが終了した後、同じPIDが別のプロセスに再利用される可能性があるためです。終了コマンドを実行する直前にも、PIDとイメージ名、ユーザー、セッションなどを照合してください。時間が空いた場合やアプリを再起動した場合は、最初から調べ直します。
一覧の取得と終了操作は別々に行われるため、直前の確認だけで誤操作の可能性が完全になくなるわけではありません。確認中に対象が消えた場合は、古い値で続行しないでください。
taskkillで指定したプロセスを終了する
まずは/Fなしで終了を試す
taskkill /PID 確認したPIDローカルのプロセスに対して、/Fを付けずに終了を試す形です。これを「必ず強制終了するコマンド」と説明するのは不正確です。コマンドの応答を読み、成功・失敗とその理由を確認してください。
必要な場合だけ/Fで強制終了する
通常の終了で対応できず、対象が目的のプロセスであることと、データ損失や他の作業への影響を確認できた場合に限り、/Fを検討します。エラーが出たら自動的に/Fを付ける、という使い方は避けてください。実行前にはもう一度tasklistで照合します。
taskkill /PID 確認したPID /F/Fは強制終了の指定であり、アクセス権限を回避する指定ではありません。対象や権限によっては失敗します。オプションの定義は、Microsoftのtaskkillリファレンスで確認できます。なお、リモートの終了は/Fの有無にかかわらず強制終了になるため、本記事のローカル向け手順と混同しないでください。
終了後も対象を確認する
tasklist /V /FO LIST /FI "PID eq 確認したPID"終了コマンドのメッセージに加えて、再取得した一覧とアプリの状態を確認します。一覧の取得がエラーになった場合は「対象が消えた」と判断できません。同じPIDが表示された場合も、名前などを照合し、古い対象のままと決めつけないでください。
同名のプロセスが別のPIDで残っていても、指定したプロセスの終了が失敗したとは限りません。元から別のプロセスが動いていた場合や、アプリが新しく起動した場合を区別します。確認結果が曖昧なまま、繰り返し強制終了しないことが大切です。
複数プロセス・イメージ名・子プロセスを扱う場合
複数のPIDは/PIDを繰り返す
taskkillで複数のPIDを指定する場合は、PIDごとに/PIDを付けます。PIDをカンマ区切りで一つの/PIDに渡す形にはしません。次は構文例です。すべてのPIDを実行直前に個別確認したうえで置き換えます。
taskkill /PID 確認したPID1 /PID 確認したPID2 /PID 確認したPID3強制終了が必要と判断した場合は末尾に/Fを付けますが、一部だけが成功する可能性もあります。出力と対象ごとの現在の状態を確認し、「一括実行したから全部終了した」と扱わないでください。
/IMは同じイメージ名の複数プロセスを対象にする
イメージ名による指定は、特定のウィンドウ一つを選ぶ操作ではありません。同名の複数プロセスが対象になり、別の文書、ウィンドウ、セッションの作業にも影響するおそれがあります。対象を一つに絞れるなら、確認済みのPIDを優先します。
tasklist /V /FI "IMAGENAME eq 対象アプリ.exe"一覧にある同名プロセスをすべて対象にしてよいと確認できた場合の構文は次のとおりです。実際に終了できるかは権限などにも依存します。
taskkill /IM 対象アプリ.exeたとえばchrome.exeを指定すると、そのイメージ名に一致するプロセスが広く対象になります。これは「問題のあるタブだけを閉じる」指定でも、「Chromeに関係する別名のプロセスまで必ず全部終了する」指定でもありません。無関係な作業を巻き込まないよう、安易に/Fやワイルドカードを組み合わせないでください。
ユーザーで絞るときも、終了対象は個別に選ぶ
tasklist /V /FI "USERNAME eq PC名\ユーザー名"ユーザー名で絞り込む方法は候補の確認に使えます。ただし、同じユーザーのプロセスには作業中の別アプリも含まれます。表示されたものを丸ごと終了せず、必要な対象のPIDを選び直します。ドメインを利用する環境では、実際のドメイン名とユーザー名に合わせてください。
/Tは子プロセスまで範囲を広げる
/Tは、指定したプロセスと、そこから開始された子プロセスを終了するオプションです。単に終了を強力にするスイッチではなく、対象範囲を広げます。子プロセス側の作業まで失われる可能性があるため、関係を確認できない場合は使わないでください。依存関係が不明なシステムプロセスを順番に終了する方法も推奨しません。
実践例:応答しないChromeを調べる流れ
- 操作できるウィンドウの作業を保存します。Chrome以外のアプリも含め、保存できるものを先に保存してください。
tasklist /V /FI "IMAGENAME eq chrome.exe"で現在の候補を表示し、終了してよい対象を確認します。複数の候補から目的のものを判別できなければ、一括終了せずに判断を止めます。- 目的のPIDを直前に再確認し、
taskkill /PID 確認したPIDで終了を試します。保存済みであることや影響範囲を確認し、必要と判断した場合だけ/Fを検討します。 - 実行結果と新しい
tasklistの一覧を確認します。ほかのChromeプロセスが残っているだけで、失敗と決めつけないでください。
バッチファイルでの自動化は、まず一覧の確認から
固定のPIDを書き込んだバッチや、複数アプリを無条件に強制終了するバッチは避けます。また、終了コマンドの後に成功メッセージを表示するだけでは、終了を確認したことになりません。
以下は、現在のプロセス一覧をCSV形式で画面に表示するだけのバッチです。プロセスは終了しません。list-processes.batなどの名前で保存し、コマンドプロンプトから実行すると、表示やエラーを確認できます。
@echo off
tasklist /V /FO CSV終了操作を自動化する場合は、実行時に対象を取得すること、想定した名前・所有者などとの照合、実行結果と終了後の確認、失敗時に処理を止める条件が必要です。無人で広範囲に/Fを適用するスクリプトは、この記事の対象外です。
終了できない場合の確認事項
対象が見つからない・構文エラーになる
PIDやイメージ名を再取得し、スペル、引用符、オプションを確認します。対象がすでに終了している場合もあります。複数PIDの指定は/PIDの繰り返しです。古いPIDの使い回しや、適当な別PIDへの変更で対処しないでください。
アクセスが拒否される
まず、対象が本当に終了してよいプロセスか、自分に管理する権限があるかを確認します。権限不足への対応が必要と判断できる場合だけ管理者として開き直し、その後も対象を再確認します。保護されたプロセスなどは終了できないことがあり、/FやPowerShellの-Forceを足しても権限を回避できません。
セキュリティ製品を無効にしたり、保護を避けるために除外設定を追加したりする方法は、この問題の一般的な対処として行わないでください。管理されているPCでは、表示されたエラーと対象の情報を管理者に伝えます。
終了してもすぐに起動する
アプリや管理機能によって新しいプロセスが起動している可能性があります。新旧のPIDとアプリの状態を確認し、原因を調べずに強制終了を繰り返さないでください。サービス、回復設定、自動再起動設定を一律に無効化するのではなく、対象製品の正式な停止手順や管理者の運用方針を確認します。
原因が分からない・問題が繰り返す
コマンドのエラー内容、発生時刻、対象アプリを記録して調査します。強制終了を繰り返すことや、セーフモードへ切り替えて無理に終了させることを、汎用的な解決策にはしません。PCの再起動を検討する場合も、保存できる作業、ほかの利用者や処理への影響を先に確認してください。
PowerShellのStop-Processを使う場合の違い
PowerShellではStop-Processを利用できますが、taskkillが失敗したときに保護や権限を回避するための別手段ではありません。Stop-Process自体がプロセスを停止する操作であり、-Forceなしでもアプリの通常の保存・終了操作の代わりにはなりません。
次はPowerShellで使う構文例です。「確認したPID」を実際の数値へ置き換えます。-WhatIfは予定する操作を表示し、停止は実行しません。ただし、その表示は後の終了成功や安全性を保証するものではありません。
Stop-Process -Id 確認したPID -WhatIf保存と対象の再確認を済ませ、停止を実行する場合は、-Confirmで対象名とPIDを確認してから判断します。確認画面が出ている間に時間が空いた場合も、古い対象のまま進めず調べ直してください。
Stop-Process -Id 確認したPID -ConfirmStop-Process -Forceの役割は、確認を省略して停止することです。taskkill /Fと同じ意味のオプションとして扱わず、アクセス拒否を突破できる指定とも考えないでください。-Nameでの指定は同名の複数プロセスを対象にします。
また、Stop-Processは既定で結果を出力せず、停止処理は非同期です。画面に何も表示されなかったことだけで完了と判断せず、対象の状態を確認します。詳細はMicrosoftのStop-Processリファレンスを参照してください。
まとめ
- 保存と通常の終了を先に試し、目的のプロセスを実行直前に照合する。
taskkill /PIDと、強制終了を指定する/Fを区別する。複数PIDは/PIDを繰り返す。/IMや/Tで対象範囲が広がることを理解し、別の作業を巻き込まない。- コマンドの応答と終了後の状態を確認する。権限や保護を避けるためにセキュリティ設定を変更しない。
強制終了は、応答しないアプリへの対処の一つです。対象や影響が分からないときは実行を止め、エラーと状況を整理して管理者や製品のサポートへ相談してください。



コメント