Windows'ta belirli bir dosyanın açık olup olmadığını nasıl belirleyebilirim? [kapalı]


87

Linux için en sevdiğim araçlardan biri lsof - gerçek bir İsviçre çakısı!

Bugün kendimi bir WinXP sistemindeki hangi programların belirli bir dosyanın açık olduğunu merak ederken buldum. Lsof'a eşdeğer bir yardımcı program var mı? Ek olarak, söz konusu dosya bir ağ paylaşımı üzerindeydi, bu yüzden bunun işleri karmaşıklaştırıp karmaşıklaştırmadığından emin değilim.

Yanıtlar:


76

Sysinternals Suite'teki Process Explorer'ı kullanın , Find Handle veya DLL işlevi, bu dosya açıkken işlemi aramanıza izin verir.


Bu gerçekten soruyu cevaplıyor mu? İşlem Gezgini, belirli bir işlem / tutamaç / dll / her neyse, hangi dosyaların açık olduğunu görmenizi sağlar, ancak bu ters eşlemedir. Bu soruya cevabım stackoverflow.com/questions/15708/… bakın .
Greg Mattes

7
Evet öyle. Tutamacı Bul'a veya Dll'ye tıklayın (veya Ctrl-F'ye basın), aradığınız dosyanın adını yazın ve o dosya açıkken işlemlerin bir listesini elde edin.
Jay Hofacker

Process Explorer artık yeniden adlandırılmış ve "Process Monitor" olarak paketlenmiştir.
Matthew McCullough

7
@MatthewMcCullough Referans var mı? Hatalısınız, Process Explorer ve Process Monitor iki farklı yardımcı programdır.
Alois Mahdal

2
Process Explorer'da komut satırı arayüzü var mı?
Anderson Green

41

Eşdeğeri, lsof -p pidsysinternals handle ve listdlls'den gelen birleşik çıktıdır, yani

handle -p pid
listdlls -p pid

sysinternals ile pid öğrenebilirsiniz pslist.


Bu, Windows 10 gibi standart bir Windows kurulumuyla birlikte mi geliyor?
Morten

10

Saplamayı deneyin . Filemon & Regmon , foo duce programının sisteminize ne yaptığını anlamaya çalışmak için de harikadır.


Windows 2000 SP4, Windows XP SP2, Windows Server 2003 SP1 ve Windows Vista ile başlayan Windows sürümlerinde @slipsec FileMon ve Regmon'un yerini artık Process Monitor v3.2 almıştır.
Şanslı

7

Bir lsof eşdeğeri, Sysinternals'ın handleyinden ve listdll'lerinden birleştirilebilir , yani:

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

Ne yazık ki, bunları kullanabilmek için "Yönetici olarak çalıştırmanız" gerekir.

Ayrıca listdll'ler ve tutamaç , sürekli tablo benzeri form üretmez, bu nedenle filtreleme dosya adı PID'yi gizler. findstr /c:pid: /c:<filename>sizi her iki yardımcı programa da çok yaklaştırmalı

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
[...]

Burada gvim.exe'nin bu dosyanın açık olduğunu görebiliriz.


5

Unlocker'ı deneyin .

Unlocker sitesinde, diğer araçlarla karşılaştırmayı gösteren şık bir grafik (bağlantıyı izledikten sonra aşağı kaydırın) vardır. Açıkçası, bu tür karşılaştırmalar genellikle aracın yazarı tarafından yazıldıkları için önyargılıdır, ancak grafik en azından alternatifleri listeler, böylece bunları kendiniz deneyebilirsiniz.


4
Unlocker sadece kilitli dosyaları listeler, açık dosyaları göstermez. Çoğu Windows yazılımı, kullandığı DLL'yi kilitler ancak belgelerinizi kilitlememektedir.
Tobias

5

Dosya bir .dll dosyasıysa, kimin açtığını görmek için TaskList komut satırı uygulamasını kullanabilirsiniz:

TaskList /M nameof.dll

3

Bir "OpenFiles" programı var, Windows 7'nin bir parçası gibi görünüyor. İstediğinizi yapabiliyor gibi görünüyor. Uzak kullanıcılar tarafından açılan dosyaları listeleyebilir (dosya paylaşımı yoluyla) ve "openfiles / Local on" çağrıldıktan ve sistemi yeniden başlattıktan sonra, yerel olarak açılan dosyaları gösterebilmelidir. İkincisinin performans cezalarına sahip olduğu söyleniyor.


1
Buraya, bir klasörü silmemi ve yeniden başlatmayı engellemeyi kimin engellediğini bulmanın bir yolunu bulmaya geldim ve ihtiyacım olan komutun bir yapılandırma kurulumu gerektirdiğini görüyorum ... bunu tahmin ettiniz .... yeniden başlatma gerektiriyor. Ne kadar çok pencereler.
Gus

millet, openfiles komutunun çalıştırılmasının UZUN bir zaman aldığını unutmayın (4 dakika civarında)!
NH.

2

"Bilgisayar" (veya "Bilgisayarım") simgenize sağ tıklarsanız ve açılır menüden "Yönet" i seçerseniz, bu sizi Bilgisayar Yönetimi konsoluna götürür.

Orada, Sistem Araçları \ Paylaşılan Klasörler altında "Dosyaları Aç" ı bulacaksınız. Bu muhtemelen istediğiniz şeye yakındır, ancak dosya bir ağ paylaşımındaysa, aynı şeyi dosyanın bulunduğu sunucuda da yapmanız gerekir.


3
Bunun yalnızca diğer ağ kullanıcıları tarafından açılan paylaşılan dosyaları gösterdiğini unutmayın. Yerel sistemde açık olan dosyaları bulmaya yardımcı olmaz. Bunu sunucuda yapmak muhtemelen hangi kullanıcının dosyayı açtığını söyleyecektir, ancak o kullanıcının makinesindeki hangi programı açmayacaktır. Process Explorer (@JayHofacker tarafından belirtildiği gibi) benim için iyi çalıştı.
tomlogic

2

İşlem kimliğini bulmak için İşlem Gezgini'ni kullanın. Ardından hangi dosyaların açık olduğunu bulmak için Tutamaç'ı kullanın.

Örneğin tutamak -p

Bu yaklaşımı seviyorum çünkü Microsoft'un kendi yardımcı programlarını kullanıyorsunuz.


Keşke bunlara kaynak kodumuz olsaydı
graywolf

2

In OpenedFilesView Seçenekler menüsü altında, "göster Ağ Dosyalar" adlı bir menü öğesi vardır. Belki bu etkinleştirildiğinde, yukarıda bahsedilen yardımcı program bir miktar işe yarar.

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.