Windowsでプロセスを強制終了する


375

ときどき、Windowsマシン上のプログラムがおかしくなり、ハングするだけです。タスクマネージャーを呼び出して、[プロセスの終了]ボタンをクリックします。ただし、これは常に機能するとは限りません。何度か試してみると、通常はやがて死んでしまいますが、すぐに殺せるようになりたいです。Linuxではkill -9、プロセスが停止することを保証するだけで済みます。

これは、バッチスクリプトの記述にも使用でき、バッチスクリプトの記述はプログラミングです。

常にプロセスを強制終了するWindowsに付属のプログラムまたはコマンドはありますか? 私が初めて座ったマシンでこれを実行できるようにしたいのですが、無料のサードパーティアプリで問題ありません。


19
漂遊プロセスは、私が同意しなければならないプログラミングの共通の十分な問題です。これは主題外の質問ではありません。
Dan Molding

19
私は開発者として毎日プロセス管理を担当しています。これは私にとって完全に話題です!
John Fitzpatrick、2015年

14
この質問は削除しないことを強くお勧めします。+195そしてそれは関係する質問に対する本当に早いグーグルヒットです。
ジョシュア

2
「主にプログラミングに使用されるツールが直接含まれている場合を除いて」Visual Studioがプロセスを実行し続けることでプロセスを強制終了できないという問題に関して、私はこの問題に遭遇しました。Visual Studioを閉じることで、問題のあるプロセスを強制終了できました。
Joakim

回答:


318

TerminateProcessWindowsがプロセスを強制終了することを知る最も最終的な方法である、Processes-Tab呼び出しの「プロセスの終了」。

それが消えない場合、それは現在、いくつかのカーネルリソース(おそらくバグのあるドライバー)で待機してロックされており、プロセスを終了させるためにできること(再起動を除く)はありません。

次の場合は、ウェイバックからこのブログエントリを確認してください。http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

LinuxのようなUnixベースのシステムには、プロセスがkill -9「無停電スリープ」と呼ばれる状態(topとpsで状態と表示D)にある場合にプロセスが存続し、その時点でプロセスが十分にスリープして着信信号を処理できないという問題があります。 (これは何をするかkill-信号を送ることです)。

通常、無停電スリープは長くは続かないはずですが、Windowsの場合と同様に、壊れたドライバや壊れたuserpaceプログラム(vforkなしexec)はD永遠にスリープ状態になる可能性があります。


29
これが正解だとは思いませんが、以下のtaskkillよりも正しいことは間違いありません。
codetaku 2013

6
再起動するよりも、ログオフ/ログオンをやり直すよりも、煩わしさはわずかです。まだ仕事を失いますが、おそらくそれほど多くの時間ではありません。
awidgery 2013

8
これは、最初のプロセスが常に実行されていることを確認している他のプロセスが原因です。古いインスタンスを
強制終了

8
この答えはまったく正しくありません。「プロセスの終了」は、(たとえば)サービスプロセスを強制終了できないため、プロセスを強制終了するための最も究極的な方法ではありません。taskkill /f最も究極です。
user626528

5
TaskKill / fはTerminateProcessAPI のみを呼び出します。タスクマネージャーとまったく同じことを行います(ただし、権限は昇格されており、そのとおりです)。
ピリフ2015年

233
taskkill /im myprocess.exe /f

「/ f」は「力」用です。PIDがわかっている場合は、次のように指定できます。

taskkill /pid 1234 /f

他の多くのオプションが可能です、ただtaskkill /?と入力してください。それらすべてのために。「/ t」オプションは、プロセスとすべての子プロセスを強制終了します。それはあなたに役立つかもしれません。


10
ただのメモ。これは、サーバー管理用のスクリプトを記述している場合に特に役立ちます。kill.exe(NT Resキットから)はプログラムを終了させますが、クラッシュハンドラー(特にwindbg)がインストールされている場合、OSは強制終了されたプロセスがクラッシュしたと認識し、デバッグを試みるため、問題を引き起こす可能性があります。それ。Taskkillはこの問題にはなりません。
アーロン

6
@lzprgmr - taskkillと「エンド・タスク」はおそらく両方とも同じ基本的なウィンドウが「のTerminateProcess」機能を呼び出す msdn.microsoft.com/en-us/library/windows/desktop/...
JosephStyons

60
これは、タスクマネージャからの「プロセスの終了」よりも効果的ではありません。
エディ

2
私は再起動せずに強制的にSugarSync.exeを強制終了しようとしました(実際に実行される前にSugarSyncを2回再起動するため、再び機能します)がtaskkill / T / F / IM SugarSync.exeが機能しません-にもかかわらずそれは「成功」を主張します
ジョン・クームズ

2
ありがとうございました!End Tasktaskkill /pid 1234 /fが機能しない場合でも機能します。うわー!
ヘンディイラワン2015

37

プロセスハッカーには、プロセスを強制終了する多くの方法があります。

(プロセスを右クリックして、[その他]-> [ターミネーター]に移動します。)


5
これを検索すると数百万の無料ダウンロードが得られるだけなので、裏付けの方法で多くを見つけることはできません!!! リンク。しかし、ウイルスのリスクなど、実際に行っていることを実行します。
bwerks 14年

2
@Nuzzolilo:もちろん!プロセスを右クリックし、[その他]-> [ターミネータ]に移動します。
user541686 2014

6
すべてのプロセスで機能するわけではなく、すべてのオプションを生き残ったプロセスがありました。
Zitrax 2015年

7
コンピューターがブルースクリーンになった。再起動後にプロセスは終了しました。よくできました... -.- '
Pedro Oliveira

5
残念ながらターミネーターはv2.39で削除されました:(
raymai97

23

JosepStyonsは正しいです。cmd.exeを開いて実行します

taskkill /im processname.exe /f

言ってエラーがある場合、

エラー:PID 1234のプロセス "process.exe"を終了できませんでした。理由:アクセスが拒否されました。

次に、管理者としてcmd.exeを実行してみます。


9
管理者として実行すると、エラーが変化します。それは今言う:ERROR: The process with PID 17888 (child process of PID 17880) could not be terminated. Reason: There is no instance of the task.それは親を見つけることができないとして、それはPID 17880.親を参照している、それは孤立した子供を殺すことはありません。:(
ジェシー・チザム

1
「プロセスを正常に強制終了するには、子プロセスも強制終了する必要があります」これを試してください。stackoverflow.com
questions/12528963/

私の場合、私が殺すように言ったゾンビプロセスは唯一の子供であり、親はいませんでしたが、ゾンビはまだ親がいると思っていました。私の場合、Windows 8.1の設定の詳細な修復システムパスを使用して解決しましたが、実際にディスクを消去することをキャンセルし、完全に強制的に再起動しました。通常のシャットダウンと再起動は、実際にはスリープ/ハイバネーションです(起動時の時間を節約するため)。完全にシャットダウンするのは簡単ではありません。
ジェシーチザム2015年

「アクセスが拒否されました」とは、プロセスが既に閉じられていることを意味します。たとえば、先に閉じようとした場合などです。閉まるまで待つ必要があります。
Pacerier

管理者権限でのtaskkillの結果:アクセスが拒否されました。
18

22

sysinternals(現在はMicrosoft)からプロセスエクスプローラーを取得する

プロセスエクスプローラー-Windows Sysinternals | Microsoftドキュメント


15
それはより多くの情報を提供します(そしてロックハンドルを検索するためのいくつかの限られた機能)が、私はそれを使ってタスクを殺すことで基本的なタスクマネージャーよりも成功していません。特定のプロセス(アンチウイルス、SugarSync.exeなど)は、単に死ぬことを拒否します。
Jon Coombs 14

15

うまく機能する1つのトリックは、デバッガーを接続してからデバッガーを終了することです。

XPまたはWindows 2003では、箱から出荷されるntsdを使用してこれを行うことができます。

ntsd -pn myapp.exe

ntsdは新しいウィンドウを開きます。ウィンドウに「q」と入力するだけで、デバッガが終了し、プロセスが終了します。

これは、タスクマネージャーがプロセスを強制終了できないように見えても機能することがわかっています。

残念ながら、ntsdはVistaから削除されており、適切なデバッガーを取得するには、Windows用の(無料の)デバッグツールをインストールする必要があります。


1
本当にありがとうございます。"-c q"(引用符なし)を自動終了に追加すると、理想的なプロセスキラーになります。
ジョアニス

2
Visual Studioとデバッグ中のアプリケーションの両方がハングしたら、VSの古いインスタンスをアタッチして強制終了します。キラーはVSの新しいインスタンスにすることができます。これにより、古いプロジェクトを開いて作業を続けることができます。
Bruno Martinez

そのリンクから何もダウンロードしない方法を理解できwinsdk_web.exeません。
エンドリス2014年

これで、インストーラを実行して、Windows 10 SDKでそれを取得し、チェックを外すと、すべてが、(「Windows用デバッグツール」することができますdocs.microsoft.com/en-us/windows-hardware/drivers/debugger/...
コバーン

6

ATコマンドを設定して、システムとしてタスクマネージャまたはプロセスエクスプローラを実行します。

AT 12:34 /interactive "C:/procexp.exe"

ルートCドライブにプロセスエクスプローラーがあった場合、これはそれをSYSTEMとして開き、アクセス拒否エラーが発生することなくプロセスを強制終了できます。これを将来1分程度に設定すると、ポップアップ表示されます。


4
これを実行しようとすると次の警告が表示され、機能しないようです。 /?' 詳細については)。"
WhiteKnight、2014年

0

ntsdアクセスが拒否されたら、次のことを試してください。

ZeroWaveは、あらゆる種類のプロセスをマルチレベルで終了できるシンプルなツールとして設計されました。

ZeroWaveは、簡単なインストールと非常にフレンドリーなグラフィカルインターフェイスにより、使いやすいプログラムでもあります。

ZeroWaveには3つの終了モードがあり、 "INSANE"モードを使用すると、Windowsで実行できるあらゆる種類のプロセスを終了できます。

ZeroWaveがavp.exeを強制終了できないようです


0

参考までに、システムまたはTrustedinstallerを使用してタスクを強制終了することができます;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.