web-dev-qa-db-ja.com

Windowsで特定のスレッドを強制終了するにはどうすればよいですか?

プロセスExplorer.exeには、「windows.immersiveshell.serviceprovider.dll」で始まる「開始アドレス」のスレッドがあります。それは多くの処理能力を必要とします。さらに、スリープから復帰した後、Alt + Tabダイアログで発生するクラス「MetroGhostWindow」の3つのウィンドウが生成されます。

Process Hackerでスレッドを強制終了すると、うまく機能し、リソースが解放されます。しかし、同じことを行うためのコマンドラインツールはありますか?

1
Anixx

まあ、このvbsスクリプトは私のためにそのことをします。

それへのショートカットを自動起動フォルダに入れます。このスクリプトユーティリティnopeyおよびprocesshackerと同じフォルダに入れます。

Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("nopey.exe list threads Explorer.exe")
Set objStdOut = objWshScriptExec.StdOut

Do 
strLine = objStdOut.ReadLine
pos=Instr(strLine, "00000000")
If pos<>0 And Op=0 Then Exit Do
Op=Instr(strline, "TID")
Loop

Tid=CLng("&H" & (Mid(strLine, 4,4)))

'WScript.Echo Tid

objShell.Run "ProcessHacker.exe -c -ctype thread -cobject " & Tid & " -caction terminate", 0

また、Explorerが再起動するまで、すべてのMetroのものを無効にします。

P.S.これが必要なものがすべて入ったZipアーカイブです。開梱して実行するだけです。

http://www.eightforums.com/attachments/customization/67840d1462474574-there-way-disable-metro-interface-metrokill.Zip

1
Anixx

PH(Process Hacker)のコマンドライン引数を作成できます。

あなたはProcessHacker.exe -c -ctype thread -cobject 1424 -caction terminateを行うことができます

Process Explorer を使用してIDを取得し、終了するスレッドのTID(スレッドID)を見つけることができます。これを行うには、[プロセス]> [プロパティ]を右クリックすると、終了するスレッドが表示されます。

私の例では、TIDは7924です。

Showing TID of the thread you want to end

0
Bitten Fleax