मैं यह कैसे निर्धारित कर सकता हूं कि विंडोज में एक विशिष्ट फ़ाइल खुली है या नहीं? [बन्द है]


87

लिनक्स के लिए मेरा पसंदीदा उपकरण है lsof - एक असली स्विस सेना चाकू!

आज मैंने खुद को आश्चर्यचकित करते हुए पाया कि एक WinXP सिस्टम पर कौन से प्रोग्राम में एक विशिष्ट फ़ाइल खुली थी। क्या lsof के लिए कोई समान उपयोगिता है? इसके अतिरिक्त, प्रश्न में फ़ाइल एक नेटवर्क साझा से अधिक थी, इसलिए मुझे यकीन नहीं है कि यदि यह मामला जटिल है।

जवाबों:


73

Sysinternals सुइट से प्रोसेस एक्सप्लोरर का उपयोग करें , हैंडल हैंडल या DLL फ़ंक्शन आपको उस फ़ाइल को खोलने की प्रक्रिया की खोज करने देगा।


क्या यह वास्तव में सवाल का जवाब देता है? प्रोसेस एक्सप्लोरर आपको यह देखने देता है कि कौन सी फाइलें किसी विशेष प्रक्रिया / हैंडल / dll / जो कुछ के लिए खुली हैं, लेकिन वह रिवर्स मैपिंग है। इस सवाल पर मेरा जवाब stackoverflow.com/questions/15708/… देखें ।
ग्रेग मैट

6
हाँ यह करता है। Find Handle या Dll (या Ctrl-F को हिट करें) पर क्लिक करें, उस फ़ाइल के नाम को टाइप करें जिसे आप खोज रहे हैं, और आप उस फ़ाइल के साथ प्रक्रियाओं की एक सूची के साथ समाप्त होते हैं।
जे हॉफैकर

प्रोसेस एक्सप्लोरर को अब "प्रोसेस मॉनिटर" में बदल दिया गया है और बंडल किया गया है।
मैथ्यू मैकुलॉ

7
@MatthewMcCullough कोई संदर्भ? आप गलत हैं, प्रोसेस एक्सप्लोरर और प्रोसेस मॉनिटर दो अलग-अलग उपयोगिताओं हैं।
अलोइस महदाल

2
क्या प्रोसेस एक्सप्लोरर में कमांड-लाइन इंटरफ़ेस है?
एंडरसन ग्रीन

40

समतुल्य lsof -p pidsysinternals हैंडल और listdlls से संयुक्त आउटपुट है, अर्थात

handle -p pid
listdlls -p pid

आप सिसिन्टर्नल्स के साथ पिड का पता लगा सकते हैं pslist


क्या यह विंडोज 10 की तरह एक मानक विंडोज़ इंस्टॉलेशन के साथ आता है?
मोर्टन

10

हैंडल आज़माएं । Filemon & Regmon भी यह पता लगाने की कोशिश करने के लिए महान हैं कि आपके सिस्टम में ड्यूस प्रोग्राम फू क्या कर रहा है।


Windows 2000 SP4, Windows XP SP2, Windows Server 2003 SP1 और Windows Vista के साथ प्रारंभ होने वाले Windows के संस्करणों पर अब प्रक्रिया मॉनिटर v3.2 द्वारा @slipsec FileMon और Regmon को बदल दिया गया है ।
लकी

6

में से एक बराबर lsof Sysinternals 'से उत्पादन जोड़ा जा सकता है संभाल और listdlls , अर्थात्:

c:\SysInternals>handle
[...]
------------------------------------------------------------------------------
gvim.exe pid: 5380 FOO\alois.mahdal
   10: File  (RW-)   C:\Windows
   1C: File  (RW-)   D:\some\locked\path\OpenFile.txt
[...]

c:\SysInternals>listdlls
[...]
------------------------------------------------------------------------------
Listdlls.exe pid: 6840
Command line: listdlls

  Base        Size      Version         Path
  0x00400000  0x29000   2.25.0000.0000  D:\opt\SysinternalsSuite\Listdlls.exe
  0x76ed0000  0x180000  6.01.7601.17725  C:\Windows\SysWOW64\ntdll.dll
[...]

c:\SysInternals>listdlls

दुर्भाग्य से, आपको उनका उपयोग करने में सक्षम होने के लिए "प्रशासक के रूप में चलना होगा"।

इसके अलावा listdlls और संभाल निरंतर तालिका की तरह फार्म का उत्पादन नहीं करते हैं इसलिए फ़िल्टरिंग फ़ाइल नाम पीआईडी ​​को छिपा देगा।findstr /c:pid: /c:<filename>हालांकि आपको दोनों उपयोगिताओं के साथ बहुत करीब होना चाहिए

c:\SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm
System pid: 4 \<unable to open process>
smss.exe pid: 308 NT AUTHORITY\SYSTEM
avgrsa.exe pid: 384 NT AUTHORITY\SYSTEM
[...]
cmd.exe pid: 7140 FOO\alois.mahdal
conhost.exe pid: 1212 FOO\alois.mahdal
gvim.exe pid: 3408 FOO\alois.mahdal
  188: File  (RW-)   D:\some\locked\path\OpenFile.txt
taskmgr.exe pid: 6016 FOO\alois.mahdal
[...]

यहाँ हम देख सकते हैं कि gvim.exe इस फ़ाइल को खोलने वाला है।


5

अनलॉकर का प्रयास करें ।

अनलॉकर साइट में एक निफ्टी चार्ट है (लिंक का अनुसरण करने के बाद नीचे स्क्रॉल करें) जो अन्य टूल की तुलना दिखाता है। स्पष्ट रूप से ऐसी तुलना आमतौर पर पक्षपाती होती है क्योंकि वे आमतौर पर उपकरण लेखक द्वारा लिखी जाती हैं, लेकिन चार्ट कम से कम विकल्पों को सूचीबद्ध करता है ताकि आप उन्हें अपने लिए आज़मा सकें।


4
अनलॉकर केवल लॉक की गई फ़ाइलों को सूचीबद्ध करता है, खोली गई फ़ाइलों को नहीं। अधिकांश विंडोज सॉफ्टवेयर DLL का उपयोग करता है, लेकिन आपके दस्तावेजों को नहीं।
तोबियों

5

यदि फ़ाइल एक .dll है तो आप टास्कलिस्ट कमांड लाइन ऐप का उपयोग करके देख सकते हैं कि यह किसके लिए खुला है:

TaskList /M nameof.dll

3

एक कार्यक्रम है "ओपनफाइल्स", लगता है कि यह विंडोज 7 का हिस्सा है। ऐसा लगता है कि यह वही कर सकता है जो आप चाहते हैं। यह दूरस्थ उपयोगकर्ताओं (फ़ाइल साझा के माध्यम से) द्वारा खोली गई फ़ाइलों को सूचीबद्ध कर सकता है और, "ओपनफ़ाइल्स / लोकल ऑन" और सिस्टम रीस्टार्ट करने के बाद, यह स्थानीय रूप से खोली गई फ़ाइलों को दिखाने में सक्षम होना चाहिए। उत्तरार्द्ध को प्रदर्शन दंड कहा जाता है।


1
मैं यहां यह खोजने का तरीका ढूंढ रहा हूं कि कौन मुझे फ़ोल्डर हटाने से रोक रहा है और पुनरारंभ करने से बचता है, और मुझे लगता है कि मुझे जिस कमांड की आवश्यकता है वह एक कॉन्फ़िगर सेटअप की आवश्यकता है ... आपने अनुमान लगाया था .... पुनः आरंभ करने की आवश्यकता है। कितनी बहुत खिड़कियां।
गस

दोस्तों, इस बात का ध्यान रखें कि ओपनफाइल्स कमांड को चलने के लिए एक लंबा समय लगता है (4 मिनट के आदेश पर)!
एनएच।

2

यदि आप अपने "कंप्यूटर" (या "मेरा कंप्यूटर") आइकन पर राइट-क्लिक करते हैं और पॉप-अप मेनू से "प्रबंधित करें" चुनें, तो यह आपको कंप्यूटर प्रबंधन कंसोल पर ले जाएगा।

वहाँ, सिस्टम टूल्स \ साझा फ़ोल्डर के तहत, आप "ओपन फाइल्स" पाएंगे। यह संभवतः आप जो चाहते हैं उसके करीब है, लेकिन अगर फ़ाइल नेटवर्क साझा पर है तो आपको सर्वर पर वही काम करना होगा जिस पर फ़ाइल रहती है।


3
ध्यान दें कि यह केवल उन साझा फ़ाइलों को दिखाता है जो अन्य नेटवर्क उपयोगकर्ताओं द्वारा खुले हैं। यह उन फ़ाइलों को खोजने में मदद नहीं करता है जो स्थानीय प्रणाली पर खुली हैं। सर्वर पर ऐसा करना शायद आपको बताएगा कि किस उपयोगकर्ता के पास फ़ाइल खुली है, लेकिन उस उपयोगकर्ता की मशीन पर कौन सा प्रोग्राम नहीं है। प्रोसेस एक्सप्लोरर (जैसा कि @JayHofacker द्वारा उल्लेख किया गया है) ने मेरे लिए अच्छा काम किया।
21

2

प्रक्रिया आईडी खोजने के लिए प्रोसेस एक्सप्लोरर का उपयोग करें। फिर हैंडल का उपयोग करें फाइलों को खोलने के लिए यह पता लगाने के का ।

जैसे हैंडल -पी

मुझे यह दृष्टिकोण पसंद है क्योंकि आप स्वयं Microsoft से उपयोगिताओं का उपयोग कर रहे हैं।


यदि केवल हमारे पास स्रोत कोड था
ग्रेवुल्फ

2

में OpenedFilesView , विकल्प मेनू के अंतर्गत, वहाँ "शो नेटवर्क फ़ाइलें" नाम के एक मेनू आइटम है। शायद उस सक्षम के साथ, उपर्युक्त उपयोगिता कुछ काम की है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.