Virkelig dræber en proces i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Af og til bliver et program på en Windows-maskine skør og bare hænger. Så jeg opkalder opgaveadministratoren og klikker på knappen 'Afslut proces' for den. Men det virker ikke altid; hvis jeg prøver det nok, så vil det normalt dø i sidste ende, men jeg vil virkelig gerne bare kunne dræbe det med det samme. På Linux kunne jeg bare kill -9 for at sikre, at en proces vil dø.


Dette kan også bruges til at skrive batch scripts og skrive batch scripts er programmering.


Er der noget -program eller kommando, der følger med Windows, der altid vil dræbe en proces? En gratis tredjepartsapp ville være fint, selv om jeg foretrækker at kunne gør det på maskiner jeg sætter mig på for første gang.

Bedste reference


'Afslut proces' på processerne-faneblad TerminateProcess, som er den mest ultimative måde, Windows ved at dræbe en proces.


Hvis det ikke går væk, er det i øjeblikket låst venter på nogle kernelressourcer (sandsynligvis en buggy driver), og der er intet (uden genstart) du kunne gøre for at få processen til at gå væk.


Se på denne blog-entry fra wayback når: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx[14]


Unix-baserede systemer som Linux har også det problem, hvor processer kan overleve en kill -9, hvis de er i det såkaldte 'Uninterruptible Sleep' (vist af top og ps som stat D) processer sover så godt, at de ikke kan behandle indkommende signaler (hvilket er hvad kill gør - sende signaler).


Normalt bør uafbrudt søvn ikke vare længe, ​​men som i Windows kan ødelagte drivere eller brudte brugerrumsprogrammer (vfork uden exec) ende med at sove i D for evigt.

Andre referencer 1


taskkill /im myprocess.exe /f


'/F' er for 'kraft'.
Hvis du kender PID, kan du angive det, som i:


taskkill /pid 1234 /f


Masser af andre muligheder er mulige, skriv bare taskkill/? for dem alle. Alternativet '/t' dræber en proces og ethvert barn processer; Det kan være nyttigt for dig.

Andre referencer 2


Proceshacker har mange måder at dræbe en proces på. [15]





(Højreklik på processen, og gå til Diverse-> Terminator.)

Andre referencer 3


Få procesforsker fra sysinternals (nu Microsoft)


Process Explorer - Windows Sysinternals | Microsoft Docs [16]

Andre referencer 4


JosepStyons har ret. Åbn cmd.exe og kør


taskkill /im processname.exe /f


Hvis der er en fejl, der siger,



  FEJL: Processen 'process.exe' med PID 1234 kunne ikke være
  afsluttes.
      Årsag: Adgang nægtes.



Prøv derefter at køre cmd.exe som administrator.

Andre referencer 5


Et trick, der fungerer godt, er at vedhæfte en debugger og derefter afslutte debuggeren.


På XP eller Windows 2003 kan du gøre dette ved hjælp af ntsd, der sendes ud af kassen:


ntsd -pn myapp.exe


ntsd åbner et nyt vindue. Skriv bare 'q' i vinduet for at afslutte debuggeren og tage processen ud.


Jeg har kendt dette til at fungere, selvom task manager ikke synes at kunne dræbe en proces.


Desværre blev ntsd fjernet fra Vista, og du skal installere (gratis) debbugging værktøjer til Windows for at få en passende debugger. [17]

Andre referencer 6


opsæt en AT-kommando for at køre task manager eller proces explorer som SYSTEM.


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


Hvis procesopdageren var i dit root C-drev, ville det åbne det som SYSTEM, og du kunne dræbe enhver proces uden at få nogen adgang nægtet fejl. Indstil dette til som et minut i fremtiden, så vil det dukke op for dig.

Andre referencer 7


Når ntsd-adgang nægtes, prøv:


ZeroWave blev designet til at være et simpelt værktøj, der vil give en flerårig opsigelse af enhver form for proces.


ZeroWave er også et brugervenligt program på grund af sin enkle installation og dens meget venlige grafiske grænseflade.


ZeroWave har tre termineringsfunktioner, og med 'INSANE' -tilstanden kan opsige enhver form for proces, der kan køre på Windows.


Det ser ud til, at ZeroWave ikke kan dræbe avp.exe