2011-02-01 6 views
-1

WindowsでAPI関数のみを使用して名前でプロセスを強制終了するにはどうすればよいですか?プロセスを名前で抹消する

+6

何オペレーションシステムであるの?見つけることができますかどのプラットフォームですか? – 0xAX

答えて

1

あなたが殺すことによって極端な偏見で終結する場合、theresは常にTerminateProcessです。 TerminateProcessを呼び出したときにロードされたDLLが適切にアンロードされないため、使用されたリソースが解放されない可能性があるため、別の方法(メインウィンドウにWM_CLOSEをポストするなど)がある場合は、使用しないことをお勧めします。

本当の問題は、プロセスIDに名前から取得する方法で、これは通常

EnumProcesses()
EnumProcessModules()
GetModuleFileNameEx()
GetModuleBaseName()

との比較を必要としますあなたが探しているものに対する結果のベースモジュール名。しかし、システム上で実行されるモジュール名のインスタンスが複数存在する可能性があります。あなたはこの状況でインスタンスをどのように区別しますか?

1
​​

http://en.wikipedia.org/wiki/Killall(あなたはOSを指定していないとして、これはLinuxだけに適用されることに注意してください)

+0

これは、すべてのプロセスを 'yourprocess'という名前で強制終了することに注意してください。このプロセスのインスタンスが複数ある場合は、問題がある可能性があります。 –

+0

@ジュリガラス:確かに。悲しいかな、名前だけを使って区別する方法はありません。あなたは 'pgrep'して最初のものだけを' kill'することができますが、それでも何も解決しません。どのように正しいことが分かりますか?あなたはそうしない。 – Piskvor

+0

私は窓で意味する – gilhanan

0

cmdboxでtaskkill /F /im cmd.exeを使用すると、すべてのcmd.exeプログラムを強制終了できます。

フラグはtaskkillに強制的にプロセスを強制終了するよう指示しますが、 taskkill /im cmd.exeは強制的に強制終了信号を送信してシャットダウンします。 taskkill上

より多くの情報がhere

のプロセスを終了させるための別の素晴らしいツールがwmic

関連する問題