मैं कैसे बता सकता हूं कि कौन सी "explorer.exe" प्रक्रिया मुख्य है?


13

मेरे पास एक बैच फ़ाइल है जो कुछ रजिस्ट्री फ़ाइलों को बदलती है, और फिर explorer.exe को पुनरारंभ करता है ताकि वे प्रभावी हों। मैं आज्ञाओं का उपयोग कर रहा हूँ

taskkill /f /im explorer.exe
explorer.exe

यह कोर्स मेरे द्वारा खोले गए एक्सप्लोरर विंडो सहित, सभी एक्सप्लोरर को मारता है । (जाहिर है, मैं विकल्प का उपयोग कर रहा हूं Launch folder windows in a separate process।)

क्या कोई तरीका है जिससे मैं यह पता लगा सकता हूं कि एक्सप्लोरर का कौन सा उदाहरण मुख्य है, और बस उसे मारना है?


मुख्य explorer.exe को मारना संभवत: बस सभी को मार देगा क्योंकि वे इसे चलाने के लिए निर्भर करते हैं।
कटकजर्म

1
@ केकज ऐसा नहीं है। मैं इसे मैन्युअल रूप से करने में सक्षम हूं। प्रत्येक विंडो एक स्वतंत्र प्रक्रिया है।
होड -

मैं प्राथमिक (डेस्कटॉप के साथ जुड़ा हुआ) explorer.exeउदाहरण निर्धारित करने के लिए एक विश्वसनीय तरीका खोजने में दिलचस्पी रखता हूं , लेकिन विपरीत कारण के लिए। मुझे यह कष्टप्रद लगता है कि explorer.exeजब उनकी सभी संबद्ध विंडो बंद हो जाती हैं तो स्पॉन्डेड प्रक्रियाएं हमेशा बाहर नहीं निकलती हैं। मैं उन्हें मारने के लिए टास्क मैनेजर का उपयोग करता हूं, और इस तथ्य पर भरोसा करता हूं कि स्पॉन्ड इंस्टेंसेस आमतौर पर उच्च प्राथमिकता (किसी कारण के लिए) पर सेट होते हैं। यह ठीक काम करता है, लेकिन अगर मैं इसे सामान्य (स्पष्ट कारणों के लिए) सेट करता हूं, तो मैं गलती से प्राथमिक प्रक्रिया को मार देता हूं।
Synetech

@Synetech इसका समाधान है taskkill /f /im explorer.exe /fi "windowtitle ne N/A"। किसी कारण से, cmd प्रॉम्प्ट में कॉपी / पेस्ट करना काम नहीं करता है; आपको इसे हाथ से टाइप करना होगा। एक बैच फ़ाइल की कोशिश नहीं की।
होड - मोनिका आर्मी

1
आपने समस्या को एक आसान और असंभव भाग में विभाजित कर दिया है, आसान भाग को हल कर दिया है और अब असंभव भाग की मदद मांग रहे हैं। यह काफी संभावना है कि समाधान का "आसान" हिस्सा सही नहीं है (जैसे कि आप जो करने की कोशिश कर रहे हैं वह एक समूह नीति के साथ प्राप्त किया जा सकता है), इसलिए यह अच्छा होगा यदि आपके प्रश्न में मूल समस्या शामिल है जिसे आप हल करने की कोशिश कर रहे हैं। । उन प्रक्रियाओं को मारना जो आपके पास नहीं हैं, शायद ही कभी सही हों।
साइमन रिक्टर

जवाबों:


9

विंडो शीर्षक आधारित दृष्टिकोण

@ Techie007 नेexplorer.exe विंडो टाइटल के साथ हत्या का सुझाव दियाN/A

आदेश

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

यह काम किस प्रकार करता है

  • tasklist /nh /v /fi "imagename eq explorer.exe"वर्बोसली छवि नाम के साथ सभी प्रक्रियाओं को सूचीबद्ध करता है explorer.exe

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

    निष्पादित करता है COMMAND1। आउटपुट की प्रत्येक पंक्ति के लिए, यह चर %%pऔर %%qदूसरा और दसवां "टोकन" (अंतरिक्ष द्वारा सीमांकित) और निष्पादित करता है COMMAND2

    के मामले में taskkill /v, %%p अब %%qविंडो शीर्षक PID और (शुरुआत में) रखता है ।

  • if "%%q"=="N/A" taskkill /f /pid %%pजाँचता है कि विंडो शीर्षक है या नहीं N/A

    यदि हां, तो यह प्रक्रिया को समाप्त कर देता है taskkill

मेमोरी उपयोग आधारित दृष्टिकोण

@ सिनटेक ने बताया कि यह विंडोज एक्सप्लोरर के लिए अविश्वसनीय है, लेकिन कार्यक्रमों में, मुख्य प्रक्रिया में हमेशा उच्चतम मेमोरी का उपयोग होता है।

आदेश

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

यह काम किस प्रकार करता है

  • tasklist /nh /fi "imagename eq explorer.exe"छवि नाम के साथ सभी प्रक्रियाओं को सूचीबद्ध करता है explorer.exe

  • sort /+65 पिछले आउटपुट को 65 वें वर्ण (जहां मेम उपयोग शुरू होता है) के साथ शुरू करें।

  • for /f "tokens=2" %%p in ('COMMAND') do @set explorerpid=%%pexplorerpidदूसरी ( tokens=2) इनपुट के लिए सेट - रिक्त स्थान के द्वारा सीमांकित - के उत्पादन की प्रत्येक पंक्ति COMMAND, जो इसी पीआईडी ​​है।

  • चूँकि tasklistouput सॉर्ट किया गया है, explorerpidदावा किए गए PID को रखता है, और taskkillप्रक्रिया को समाप्त करता है।


धन्यवाद! लेकिन किसी कारण से यह मेरे लिए काम नहीं कर रहा है, फिर भी। मैं यह देखने के लिए काम कर रहा हूं कि क्या मैं इसे काम करने के लिए किसी तरह संशोधित कर सकता हूं।
होड -

1
@Dennis, > explorerpid को एक्सप्लोरर के पीआईडी ​​पर सेट करने के लिए उच्चतम मेमोरी उपयोग के साथ। मुख्य प्रक्रिया को निर्धारित करने का सबसे विश्वसनीय तरीका होना चाहिए। नहीं सही नहीं है। एक नई विंडो प्रक्रिया खोलें (उदाहरण के लिए, शॉर्टकट के माध्यम से), और बहुत सारे चित्रों के साथ एक फ़ोल्डर में नेविगेट करें और उन्हें थंबनेल मोड में देखें। नई प्रक्रिया स्मृति उपयोग में मूल एक से आगे निकल जाएगी। > ठीक है, आपने उल्लेख नहीं किया कि आप डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग नहीं कर रहे हैं। सवाल यह है कि मैं कैसे बता सकता हूं कि "explorer.exe" प्रक्रिया मुख्य है? आपको और कैसे लगता है कि यह एक मुद्दा हो सकता है?
Syntech

दोनों विंडो दृष्टिकोण और मेमोरी दृष्टिकोण अब काम करते हैं। मुझे लगता है कि मैं खिड़की से जाऊंगा - अधिक विश्वसनीय लगता है। बहुत बहुत धन्यवाद!
होद -

3

शायद आप टाइटल बार में रास्ता दिखाने के लिए एक्सप्लोरर को बता सकते हैं, और फिर WINDOWTITLEउस आधार पर इसे मारने के लिए फ़िल्टर का उपयोग कर सकते हैं?

  • एक्सप्लोरर खोलें
  • दबाएँ Alt
  • "टूल (मेनू आइटम)" पर क्लिक करें
  • "फ़ोल्डर विकल्प ... (मेनू आइटम)" पर क्लिक करें
  • "फ़ोल्डर विकल्प" में "देखें (पृष्ठ टैब)" पर क्लिक करें
  • "फ़ोल्डर विकल्प" में शीर्षक पट्टी (केवल क्लासिक विषय) में "प्रदर्शन का चयन करने के लिए क्लिक करें
  • "लागू करें" -> "ठीक है" पर क्लिक करें

मार्ग 'गैर-क्लासिक' थीम के साथ एक्सप्लोरर के शीर्षक बार में नहीं दिखाएगा, लेकिन यह वहां (अब) है; यह अभी दिखाई नहीं दे रहा है।

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

अस्थायी रूप से यह निर्धारित करने के लिए कि आपको कौन सा विकल्प / शीर्षक पुनः आरंभ करना है, के लिए आपको एक क्लासिक विषय पर स्विच करने की आवश्यकता हो सकती है।

100% मूर्खतापूर्ण नहीं, लेकिन किसी भी एक्सप्लोरर विंडो में जो (आंशिक) पथ नहीं है वह कम से कम सुरक्षित होगा। :)

संपादित करें:

चूंकि आप शीर्षक "एन / ए" के साथ किसी को हड़पना चाहते हैं, तो आपको संभवतः एक बैच फ़ाइल का उपयोग करना होगा ताकि आप TASKLIST के परिणामों को टोकन कर सकें और उन P टोकन को पीआईडी ​​को मारने के लिए TASKKIL का उपयोग करने के लिए उन टोकन परिणामों का उपयोग करें।

मुझे StackOverflow.com पर एक उत्तर मिला जो इसे संबोधित करता है:

प्रश्न टास्किल से एक अनुत्तरित प्रक्रिया? क्या यह उत्तर है जिसमें यह उदाहरण बैच फ़ाइल शामिल है:

@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
)

आप Explorer.exe और इस तरह के और अधिक विशिष्ट होने के लिए 'TASKLIST / V' कमांड को बदलना चाहेंगे, लेकिन यह यो को एक अच्छा प्रारंभिक बिंदु देना चाहिए।


मैं जिस प्रक्रिया को मारना चाहता हूं वह मुख्य है। tasklist /fi "imagename eq explorer.exe" /v /fo listमुझे बताता है कि इसकी खिड़की "N / A" है। दुर्भाग्य से, `" विंडोटाल eq N / A "काम नहीं करता है। कोई विचार?
होद -

Ahhhhhh। पकड़ लिया। मुझे StackOverflow पर इसका उत्तर मिला, मैं यहाँ प्रासंगिक बिट्स के साथ उत्तर को एक लिंक के साथ अपडेट करूँगा।
Ƭᴇc atιᴇ007

मैं अब भी नहीं देखता कि यह कैसे काम करेगा। क्या होगा अगर डेस्कटॉप के अलावा कोई खुली एक्सप्लोरर खिड़कियां नहीं हैं?
सिंथे

1

सबसे कम पीआईडी ​​(प्रोसेस आईडी) के साथ प्रक्रिया को मार डालो। यह पहले शुरू किया गया होगा, क्योंकि प्रक्रिया क्रमिक रूप से गिने जाते हैं।


+1 यह पहली बार बैच फ़ाइल चलाने के लिए काम करेगा, लेकिन जब से explorer.exe को फिर से शुरू किया गया है, नई "मुख्य" प्रक्रिया में एक उच्च पीआईडी ​​होगा। क्या कोई और तरीका है?
होड -

यह सच है। हालाँकि आप बस उत्पादन कर सकते हैं tasklist | find /f "explorer"और पूछ सकते हैं (उपयोगकर्ता इनपुट के साथ) पूछें कि मारने के लिए सबसे कम पीआईडी ​​क्या है।
Myrrillic

@ होमऑफहॉड: सबसे विश्वसनीय तरीका उच्चतम मेमोरी उपयोग के साथ प्रक्रिया का चयन करना होगा। यदि आप MinGW ( sed,, awkआदि) का उपयोग कर सकते हैं , तो स्वचालित रूप से करना बहुत आसान है। यदि नहीं, तो उपयोगकर्ता इनपुट सबसे अच्छा विकल्प हो सकता है।
डेनिस

@ Adam543i, > सबसे कम पीआईडी ​​(प्रोसेस आईडी) के साथ प्रक्रिया को मारें यह पहले शुरू किया गया होगा, क्योंकि प्रक्रिया क्रमिक रूप से गिने जाते हैं। विंडोज के किस संस्करण के बारे में बात कर रहे हैं? बस यह सच नहीं है। यादृच्छिक PID सुरक्षा फ़ंक्शन के अलावा, मुझे OldNewThing पर PID के अंतराल (चार या 16 या कुछ) में असाइन किए जाने के बारे में कुछ याद है। तथ्य यह है, कि पीआईडी ​​(यहां तक ​​कि रिश्तेदार) का उपयोग करना अभी भी अविश्वसनीय है।
Synetech

@ डेनिस, > सबसे विश्वसनीय तरीका उच्चतम मेमोरी उपयोग के साथ प्रक्रिया का चयन करना होगा। नहीं। हर्गिज नहीं। स्मृति प्रक्रिया के लिए उच्चतर स्मृति उपयोग करना बेहद आसान है।
सिंथेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.