API関数のみを使用して、Windowsで名前でプロセスを強制終了するにはどうすればよいですか?
4 に答える
kill が極度の偏見を持って終了することを意味する場合、TerminateProcess が常に存在します。別の方法 (メイン ウィンドウに WM_CLOSE を投稿するなど) を見つけることができる場合は、使用しないことをお勧めします。TerminateProcess を呼び出すと、ロードされた DLL が適切にアンロードされず、使用されたリソースが解放されない可能性があるためです。
本当の問題は、名前からプロセス ID を取得する方法です。これには通常、
EnumProcesses()
EnumProcessModules()
GetModuleFileNameEx()
GetModuleBaseName()
結果の基本モジュール名を探しているものと比較します。ただし、システム上で実行されているモジュール名のインスタンスが複数存在する場合があります。この状況でインスタンスをどのように区別しますか?
killall yourprocess
http://en.wikipedia.org/wiki/Killall (OS を指定していないため、これは Linux にのみ適用されることに注意してください)
Windows を意味すると仮定すると、ZwQuerySystemInformationとTerminateProcessを使用します。詳細なサンプルについては、こちらを参照してください:名前を指定してプロセスを強制終了する方法