Hangi “explorer.exe” işleminin ana işlem olduğunu nasıl anlayabilirim?


13

Birkaç kayıt defteri dosyalarını değiştiren ve daha sonra etkili olması için explorer.exe yeniden başlatan bir toplu iş dosyası var. Komutları kullanıyorum

taskkill /f /im explorer.exe
explorer.exe

Bu tabii ki açtığım explorer pencereleri de dahil olmak üzere tüm explorer.exe işlemlerini öldürür . (Açıkçası, seçeneğini kullanıyorum Launch folder windows in a separate process.)

Hangi explorer.exe örneğinin ana olduğunu belirleyebilir ve bunu öldürmek için herhangi bir yolu var mı?


Ana explorer.exe'yi öldürmek, çalıştırmak için bağımlı oldukları için muhtemelen diğerlerini öldürecektir.
cutrightjm

1
@ekaj Yapmaz. Manuel olarak yapabilirim. Her pencere bağımsız bir işlemdir.
Hod - Monica'nın Ordusu

Birincil (Masaüstü ile ilişkili) explorer.exeörneğini de belirlemenin güvenilir bir yolunu bulmakla ilgileniyorum , ancak tam tersi. explorer.exeİlişkili pencerelerin tümü kapatıldığında ortaya çıkan süreçlerin her zaman çıkmadığını can sıkıcı buluyorum . Görev Yöneticisi'ni onları öldürmek için kullanıyorum ve ortaya çıkan örneklerin genellikle yüksek önceliğe (bazı nedenlerden dolayı) ayarlandığına güvenme eğilimindeyim. Bu iyi çalışıyor, ancak normal olarak ayarladıysam (bariz nedenlerle), o zaman birincil süreci yanlışlıkla öldürme riskiyle karşılaşıyorum.
Haziran'da Synetech

@Synetech Bunun çözümü taskkill /f /im explorer.exe /fi "windowtitle ne N/A". Bazı nedenlerden dolayı, bunu cmd istemine kopyalamak / yapıştırmak çalışmaz; elle yazmak zorundasınız. Toplu iş dosyasını denemedim.
Hod - Monica Ordusu

1
Sorunu kolay ve imkansız bir parçaya böldünüz, kolay kısmı çözdünüz ve şimdi imkansız kısım için yardım istiyorsunuz. Çözümün "kolay" kısmının doğru olmaması muhtemeldir (örneğin, yapmaya çalıştığınız şey bir grup politikasıyla gerçekleştirilebilir), bu nedenle sorunuzun çözmeye çalıştığınız orijinal sorunu içermesi iyi olurdu . Size ait olmayan öldürme işlemleri nadiren doğrudur.
Simon Richter

Yanıtlar:


9

Pencere başlığı tabanlı yaklaşım

@ techie007explorer.exe pencere başlığı ile öldürmeyi önerdiN/A .

komuta

for /f "tokens=2,10" %%p in ('tasklist /nh /v /fi "imagename eq explorer.exe"') do if "%%q"=="N/A" taskkill /f /pid %%p

Nasıl çalışır

  • tasklist /nh /v /fi "imagename eq explorer.exe"ayrıntılı olarak resim isimli tüm işlemleri listeler explorer.exe.

  • for /f "tokens=2,10" %%p in ('COMMAND1') do COMMAND2

    yürütür COMMAND1. Her çıktı satırı için, değişkenleri %%pve %%qikinci ve onuncu "jetonu" (boşlukla sınırlandırılmış) olarak ayarlar ve yürütür COMMAND2.

    Durumunda taskkill /v, %%p şimdi PID ve %%qpencere başlığını (başlangıcı) tutar .

  • if "%%q"=="N/A" taskkill /f /pid %%ppencere başlığının olup olmadığını kontrol eder N/A.

    Eğer öyleyse, işlemi ile sonlandırır taskkill.

Bellek kullanımına dayalı yaklaşım

@Syntech , bunun Windows Gezgini için güvenilir olmadığını, ancak programlarda ana işlemin her zaman en yüksek bellek kullanımına sahip olduğunu belirtti.

komuta

for /f "tokens=2" %%p in ('tasklist /nh /fi "imagename eq explorer.exe" ^| sort /+65') do @set explorerpid=%%p
taskkill /f /pid %explorerpid%

Nasıl çalışır

  • tasklist /nh /fi "imagename eq explorer.exe"Resim adına sahip tüm işlemleri listeler explorer.exe.

  • sort /+65 önceki çıktıyı 65. karakterden başlayarak sıralar (bellek kullanımının başladığı yer).

  • for /f "tokens=2" %%p in ('COMMAND') do @set explorerpid=%%pkarşılık gelen PID olan çıktının her satırının boşluklarla sınırlandırılmış explorerpidikinci ( tokens=2) girdisine ayarlar COMMAND.

  • Yana tasklistbireyin çıkışına kriteri edilmiş, explorerpidtalep edilen PID tutar ve taskkillişlemi sona erdirir.


Teşekkür ederim! Ama nedense bu henüz benim için çalışmıyor. Çalıştırmak için bir şekilde değiştirip değiştiremeyeceğimi görmek için çalışıyorum.
Hod - Monica'nın Ordusu

1
@Dennis, > explorerpid'i en yüksek bellek kullanımına sahip explorer.exe dosyasının PID'sine ayarlamak için. Ana süreci belirlemenin en güvenilir yolu bu olmalıdır. Hayır doğru değil. Yeni bir pencere işlemi açın (örneğin, bir kısayol aracılığıyla) ve çok sayıda resim içeren bir klasöre gidin ve küçük resim modunda görüntüleyin. Yeni işlem, bellek kullanımında orijinal olanı hızla geçecektir. > Varsayılan yapılandırmayı kullanmadığınızdan bahsetmediniz. Soru, hangi "explorer.exe" işleminin ana işlem olduğunu nasıl anlayabilirim? Bunun nasıl bir sorun olabileceğini düşünüyorsunuz?
Haziran'da Synetech

Hem pencereli yaklaşım hem de hafıza yaklaşımı işe yarıyor. Ben pencereli gideceğim düşünüyorum - daha güvenilir görünüyor. Çok teşekkürler!
Hod - Monica'nın Ordusu

3

Belki Explorer'a başlık çubuğundaki yolu göstermesini söyleyebilir ve ardından WINDOWTITLEfiltreyi buna dayalı olarak öldürmek için kullanabilirsiniz ?

  • Explorer'ı aç
  • Basın Alt
  • "Araçlar (menü öğesi)" seçeneğini tıklayın
  • "Klasör seçenekleri ... (menü öğesi)" seçeneğini tıklayın
  • "Klasör Seçenekleri" nde "Görünüm (sayfa sekmesi)" seçeneğini tıklayın
  • "Klasör Seçenekleri" nde "Başlık çubuğunda tam yolu görüntüle (yalnızca klasik tema)" seçmek için tıklayın
  • "Uygula" -> "Tamam" ı tıklayın.

Yol, Explorer'ın başlık çubuğunda 'klasik olmayan' temalarla gösterilmez, ancak şimdi oradadır; sadece görünür değil.

taskkill /F /FI "WINDOWTITLE eq C:\PathToThing\RunningInExplorer\ToRestart*"

Yeniden başlatmak istediğiniz Explorer örneği için yolun / başlığın ne olduğunu belirlemek için geçici olarak klasik bir temaya geçmeniz gerekebilir.

% 100 kusursuz değil, ancak başlıkta bu (kısmi) yolu olmayan tüm Explorer pencereleri en azından güvenli olacaktır. :)

Düzenle:

"N / A" başlıklı dosyayı almak istediğiniz için, muhtemelen bir toplu iş dosyası kullanmanız gerekir, böylece bir TASKLIST sonucunu belirtebilir ve bu token sonuçlarını PID ile öldürmek için TASKKIL'i kullanmak için kullanabilirsiniz.

StackOverflow.com için bu adrese bir cevap buldum:

Sorusu Gönderen adsız bir süreç Taskkill? olan bu cevabı bu örnek toplu dosyası içerir:

@echo off
SETLOCAL enabledelayedexpansion
for /f "tokens=*" %%a in ('TASKLIST /V') do (
  set s=%%a
  set p=!s:~27,5!
  set t=!s:~152,3!
  if '!t!'=='N/A' ECHO TASKKILL /PID !p! /T
)

'TASKLIST / V' komutunu Explorer.exe ve benzerlerine daha özel olacak şekilde değiştirmek isteyeceksiniz, ancak bu size iyi bir başlangıç ​​noktası vermelidir.


Öldürmek istediğim süreç esas. tasklist /fi "imagename eq explorer.exe" /v /fo listbana pencere başlığının "Yok" olduğunu söylüyor. Ne yazık ki, "" windowtitle eq N / A "çalışmıyor. Herhangi bir fikir?
Hod - Monica'nın Ordusu

Ahhhhhh. Anladım. StackOverflow'da buna bir cevap buldum, cevabı burada bir linkle ilgili bitlerle güncelleyeceğim.
Juncʜιᴇ007

Bunun nasıl çalışacağını hâlâ göremiyorum. Masaüstünden başka açık Explorer penceresi yoksa ne olur?
Haziran'da Synetech

1

İşlemi en düşük PID (İşlem Kimliği) ile öldürün. İşlemler sırayla numaralandıkça ilk olarak başlatılmış olurdu.


+1 Bu, toplu iş dosyası ilk kez çalıştırıldığında çalışır, ancak explorer.exe yeniden başlatıldığından, yeni "ana" işlem daha yüksek bir PID'ye sahip olacaktır. Başka bir yol var mı?
Hod - Monica'nın Ordusu

Bu doğru. Ancak, sadece çıktı verebilir tasklist | find /f "explorer"ve sonra sadece (kullanıcı girişi ile) öldürmek için en düşük PID ne olduğunu sorabilirsiniz.
Efsanevi

@HodofHod: En güvenilir yol, en yüksek bellek kullanımına sahip işlemi seçmektir. MinGW ( sed, awkvb.) Kullanabiliyorsanız , bunu yapmak oldukça kolaydır. Değilse, kullanıcı girişi en iyi seçim olabilir.
Dennis

@ Adam543i, > İşlemi en düşük PID (İşlem Kimliği) ile öldür. İşlemler sırayla numaralandıkça ilk olarak başlatılmış olurdu. Hangi Windows sürümünden bahsediyorsunuz? Bu açıkça doğru değil. Rastgele PID güvenlik fonksiyonunun yanı sıra, OldNewThing'de PID'lerin aralıklarla (dört veya 16 veya daha fazla) atandığını hatırlıyorum. Gerçek şu ki, PID'lerin (göreceli olanlar bile) kullanılması çok güvenilmez.
Haziran'da Synetech

@Dennis, > En güvenilir yol, en yüksek bellek kullanımına sahip işlemi seçmektir. Hayır! Bir şey değil. Bir yumurtlama sürecinin daha yüksek bellek kullanımına sahip olması son derece kolaydır.
Haziran'da Synetech
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.