Windows'da bir işlemi gerçekten öldürmek


375

Bazen bir Windows makinesindeki bir program çıldırır ve takılır. Bu yüzden görev yöneticisini arayacağım ve bunun için "İşlemi Sonlandır" düğmesine basacağım. Ancak, bu her zaman işe yaramaz; eğer yeterince kez denersem, genellikle sonunda ölür, ama gerçekten hemen öldürmek istiyorum. Linux'ta sadece kill -9bir sürecin öleceğini garanti edebilirim .

Bu aynı zamanda toplu komut dosyaları yazmak için kullanılabilir ve toplu komut dosyaları yazmak programlamadır.

Bazı var mı program veya daima bir süreç öldürecek Windows ile birlikte gelen komut? İlk kez oturduğum makinelerde bunu yapmayı tercih etsem de, ücretsiz bir üçüncü taraf uygulaması iyi olurdu.


19
Kaçak süreçler, programlamada katılmamaya yetecek kadar yaygın bir sorundur; bu konu dışı bir soru değil.
Dan Moulding

19
Bir geliştirici olarak her gün süreç yönetimi ile ilgileniyorum. Bu tamamen benim için bir konu!
John Fitzpatrick

14
Bu soruyu silmemenizi şiddetle tavsiye ediyorum. +195 ve ilgili soru için gerçekten erken bir google hit.
Joshua

2
"doğrudan programlama için kullanılan araçları içermedikçe" Visual Studio ile ilgili olarak, beni öldüremediğim bir işlemi devam ettirmek için bu konu ile karşılaştım. Visual Studio'nun kapatılması sorunlu sürecin öldürülmesine yardımcı oldu.
Joakim

Yanıtlar:


318

TerminateProcessWindows'un bir işlemi öldürmeyi bilmesi için en iyi yol olan İşlemler-Sekme çağrılarındaki "İşlemi Sonlandır" .

Eğer gitmezse, şu anda bazı çekirdek kaynaklarda (muhtemelen bir buggy sürücüsü) bekleyen kilitli ve işlemi ortadan kaldırmak için yapabileceğiniz hiçbir şey (yeniden başlatma kısa).

Bu blog girişine şu yoldan bir göz atın: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Linux gibi Unix tabanlı sistemlerde, süreçlerin kill -9"Kesintisiz uyku" (üstte ve ps'de durum olarak gösterilir D) olarak bilinen bir süreçteyse, süreçlerin gelen sinyalleri işleyemeyecek kadar iyi uyuduğu bir sorun var. (bu ne killyapar - sinyal gönderme).

Normal olarak, Kesintisiz uyku uzun sürmemelidir, ancak Windows altında olduğu gibi, bozuk sürücüler veya bozuk kullanıcı alanı programları ( vforkolmadan exec) Dsonsuza kadar uyuyabilir .


29
Bunun doğru cevap olduğundan nefret ederken, aklımda aşağıda taskkill'den daha doğru olduğuna şüphe yok .... aptal adamcağız sürücüleri!
codetaku

6
Yeniden başlatmaktan çok daha az can sıkıcı olan, tekrar oturum açmak / kapatmaktır. Hala işini kaybetmek, ama belki de çok fazla zaman değil.
awidgery

8
ilk işlemin her zaman çalıştığından emin olmak için başka bir işlemden kaynaklanır. Eski örneğini öldürdün ve bekçi tarafından yeni bir tane başlatıldı
Pilif

8
Bu cevap hiç doğru değil . "İşlemi Sonlandır", hizmet işlemlerini (örneğin) öldüremeyeceği için işlemleri sonlandırmanın en nihai yolu değildir. taskkill /fen nihai olandır.
user626528

5
TaskKill / f yalnızca TerminateProcessAPI'yi çağırır . Görev Yöneticisi ile tam olarak aynı şeyi yapar (yine de, bunun üzerinde, yüksek ayrıcalıklarla).
pilif

233
taskkill /im myprocess.exe /f

"/ F", "kuvvet" içindir. PID'yi biliyorsanız, bunu aşağıdaki gibi belirtebilirsiniz:

taskkill /pid 1234 /f

Başka seçenekler de mümkündür, sadece taskkill /? hepsi için. "/ T" seçeneği bir işlemi ve tüm alt işlemleri öldürür; bu sizin için yararlı olabilir.


10
Sadece bir not. Bu, özellikle sunucu yönetimi için komut dosyaları yazıyorsanız yararlıdır. kill.exe (NT Res kitinden) bir programın çıkmasına neden olur, ancak bir kilitlenme işleyicisi yüklüyse (özellikle windbg), işletim sistemi öldürülen işlemi çöktüğünü göreceğinden ve hata ayıklamaya çalıştığından sorunlara neden olabilir o. Taskkill bu sorunla sonuçlanmaz.
Aaron

6
@lzprgmr - taskkill ve "son görev" her ikisi de muhtemelen aynı temel pencereler işlevini "TerminateProcess" olarak adlandırır msdn.microsoft.com/en-us/library/windows/desktop/…
JosephStyons

60
Bu, görev yöneticisinden "işlemi sonlandır" dan daha etkili değildir.
Eddie

2
SugarSync.exe'yi yeniden başlatmak zorunda kalmadan zorla öldürmeye çalışıyorum (SugarSync'i gerçekten devam etmeden önce iki kez yeniden başlatmak tekrar çalışmasını sağlıyor), ancak taskkill / T / F / IM SugarSync.exe çalışmıyor - "BAŞARI" iddia ediyor
Jon Coombs

2
TEŞEKKÜR EDERİM! taskkill /pid 1234 /fne zaman çalışır sonu Görev çalışması reddediyor! VAOV!
Hendy Irawan

37

Process Hacker'ın bir işlemi öldürmenin birçok yolu vardır.

(İşlemi sağ tıklayın, ardından Miscellaneous-> Terminator'a gidin.)


5
Bu arama sadece milyonlarca ÜCRETSİZ İNDİRME verir gibi, doğrulama yolunda çok bulamıyorum !!! bağlantıları. Ama söylediği şeyi, virüs risklerini ve her şeyi yapar.
bwerks

2
@Nuzzolilo: Elbette! İşlemi sağ tıklayın, Miscellaneous-> Terminator'a gidin.
user541686

6
Tüm süreçlerde çalışmıyor, tüm seçeneklerden kurtulan bir süreç vardı.
Zitrax

7
Bilgisayarımı mavileştirdi. İşlem yeniden başlatıldıktan sonra kayboldu. İyi iş ... -.- '
Pedro Oliveira

5
Ne yazık ki Terminator v2.39 :(
raymai97

23

JosepStyons haklı. Cmd.exe dosyasını açın ve çalıştırın

taskkill /im processname.exe /f

Bir hata varsa,

HATA: PID 1234 ile "process.exe" işlemi sonlandırılamadı. Sebep: Erişim reddedildi.

sonra cmd.exe dosyasını yönetici olarak çalıştırmayı deneyin.


9
Yönetici olarak çalışırken hata değişir. Şimdi söylüyor: ERROR: The process with PID 17888 (child process of PID 17880) could not be terminated. Reason: There is no instance of the task.ve ebeveyn PID 17880'e atıfta bulunuyor. Ebeveyni bulamadığı için yetim çocuğu öldürmeyecek. :(
Jesse Chisholm

1
"Herhangi başarıyla süreci öldürmek için kökenli eğer çok çocuk sürecini öldürmek zorunda" Bu deneyin stackoverflow.com/questions/12528963/...
Semih Chandhok

Benim durumumda, öldürmeyi söylediğim zombi süreci tek çocuktu ve hiç ebeveyn yoktu, zombi hala bir ebeveyn olduğunu düşünüyordu. Benim durumumda, Windows 8.1 Ayarları Gelişmiş Onarım Sistemi yolunu kullanarak çözüldü, ancak herhangi bir diski gerçekten silmeyi ve sadece tam zorla yeniden başlatmayı iptal et. Düzenli kapatma ve yeniden başlatma gerçekten uyku / hazırda bekletme (başlangıçta zaman kazanmak için). Tam bir kapatma yapmak için önemsiz değil .
Jesse Chisholm

"Erişim reddedildi", işlemin zaten kapatılmakta olduğu anlamına gelir. Örneğin, daha önce kapatmayı denediyseniz. Kapanana kadar beklemeniz gerekecek.
Pacerier

yönetici hakları altında taskkill sonuçları: Erişim reddedildi.
amuliar


15

İyi çalışan bir hile, bir hata ayıklayıcı eklemek ve daha sonra hata ayıklayıcıyı bırakmaktır.

XP veya Windows 2003'te, kutudan çıkan ntsd'yi kullanarak bunu yapabilirsiniz:

ntsd -pn myapp.exe

ntsd yeni bir pencere açar. Hata ayıklayıcıdan çıkmak ve işlemi yapmak için pencereye 'q' yazmanız yeterlidir.

Görev yöneticisi bir süreci öldüremiyor gibi görünse bile bunun işe yaradığını biliyordum.

Ne yazık ki ntsd Vista'dan kaldırıldı ve uygun bir hata ayıklayıcı almak için pencereler için (ücretsiz) hata ayıklama araçlarını yüklemeniz gerekir .


1
Bunun için çok teşekkür ederim. Autoquit'e "-c q" (tırnak işaretleri olmadan) ekleyin, bu da onu ideal işlem katili yapar.
Joanis

2
Visual Studio ve hata ayıklanan bir uygulama hem askıda, eklemek ve eski VS örneği öldürmek. Katil, eski bir projeyi açıp çalışmaya devam etmenizi sağlayan yeni bir VS örneği olabilir.
Bruno Martinez

Bu bağlantıdan başka hiçbir şeyi nasıl indireceğimi anlayamıyorum, ki winsdk_web.exehiçbir şey yapmıyor.
Endolit

Artık yükleyiciyi çalıştırarak ve ardından "Windows için Hata Ayıklama Araçları" ( docs.microsoft.com/en-us/windows-hardware/drivers/debugger/… ) dışındaki her şeyin işaretini kaldırarak Windows 10 SDK'sında edinebilirsiniz
Coburn

6

Görev yöneticisini veya işlem gezginini SYSTEM olarak çalıştırmak için bir AT komutu kurun.

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

İşlem explorer kök C sürücünüzde olsaydı, bu SİSTEM olarak açılır ve herhangi bir işlemi reddedilen hatalar almadan herhangi bir işlemi öldürebilirsiniz. Bunu gelecekte bir dakika gibi ayarlayın, o zaman sizin için açılır.


4
Bunu denerken aşağıdaki uyarıyı alıyorum, bu yüzden artık çalışmıyor gibi görünüyor: "Uyarı: Güvenlik geliştirmeleri nedeniyle, bu görev beklenen zamanda çalışır, ancak etkileşimli değildir. Etkileşimli görev gerekiyorsa schtasks.exe yardımcı programını kullanın ('schtasks /?' detaylar için)."
WhiteKnight

0

Ntsd erişimi reddedildiğinde şunu deneyin:

ZeroWave, her türlü işlemin çok düzeyli sonlandırılmasını sağlayacak basit bir araç olarak tasarlanmıştır.

ZeroWave, basit kurulumu ve çok dostu grafik arayüzü sayesinde kullanımı kolay bir programdır.

ZeroWave'in üç sonlandırma modu vardır ve "INSANE" modu ile Windows üzerinde çalışabilecek her türlü işlemi sonlandırabilir.

ZeroWave avp.exe'yi öldüremiyor gibi görünüyor


0

FYI bazen görevleri öldürmek için SYSTEM veya Trustedinstaller kullanabilirsiniz;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.