Hangi işlemi Windows'da bir dosyayı açık tutuyor nasıl buluyorsunuz?


515

Windows hakkında beni rahatsız etmeyen şeylerden biri, eski paylaşım ihlali hatası. Genellikle onu neyin açık tuttuğunu tanımlayamazsınız. Genellikle sadece ilgili bir dizine işaret eden sadece bir editör veya kaşiftir, fakat bazen makinemi yeniden başlatmak için başvurmak zorunda kaldım.

Suçlu bulmak için herhangi bir öneriniz var mı?


12
Bunca zaman sonra, Windows adamlarının bize bunu Explorer'dan kolayca yapmanın bir yolunu vereceğini düşünürdünüz. Acaba bu neden olmadı?
Cawflands

6
Explorer'ın sık sık bir sebeple bir dosyada tutan sorunlu süreç olduğunu gördüm.
Eddie

Bunun size pek faydası olmadığını biliyorum, ancak bunun Vista ve 2008 sunucusundan sonraki Windows sürümünün planlanmış bir özelliği olduğunu hatırladığımı düşünüyorum. ya da belki bir WinFS olayıdır. Nerede okudum emin değilim ...
Kip

Burada superuser hakkındaki cevabımı gör, Özet olarak OpenedFilesView hala 2019'da çalışıyor
Vijay

Yanıtlar:


440

Sysinternals Process Explorer ile başarılı oldum . Bununla, hangi işlemlerin açık bir dosyayı bulacağını bulabilir ve isterseniz tutamaçları kapatmak için kullanabilirsiniz. Tabii ki, tüm süreci kapatmak daha güvenlidir. Dikkatli olun ve yargılayın.

Belirli bir dosyayı bulmak Find->Find Handle or DLL... için, dosya yolunun bir parçası olan Menü seçeneğini kullanın . İşlemlerin listesi aşağıda görünecektir.

Komut satırını tercih ederseniz, ANNELER paketi komut satırı aracı içerir Kolu açık kolları listeler. Nasıl kullanılacağına dair birkaç örnek:

  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i e:\ - E sürücüsünden açılan tüm dosyaları bulun:
  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i file-or-path-in-question

17
Sapı kapatabilirsiniz ancak aklınızda bulundurun, halıyı bir uygulamanın altından çekiyorsunuz, sonuçlar en iyi ihtimalle tahmin edilemez.
WaldenL

12
@Walden: Kesinlikle. YMMV. WinXP ile birçok kez Explorer’ın bariz bir neden olmadan bir tanıtıcı açtım ve kapatmayı reddettim. Bu, silmeniz gereken bir dosyada olduğunda, tanıtıcıyı kapalı tutma veya yeniden başlatma seçeneğiniz vardır. Şimdiye kadar, onlarca kez yaptıktan sonra, hiçbir kötü etkim olmadı. Herhangi bir gelişmiş araçta olduğu gibi, dikkatli kullanın ve dikkatli olun.
Eddie

5
Tutamaçları kapatmak, uygulamanın tutamağı başka bir dosyada yeniden kullanmasına neden olabilir ve yolsuzluğa neden olabilir - aşağıdaki Jeff'in cevabına bakın: serverfault.com/a/15695/79266 ... dosyayı açık tutarak uygulamayı öldürmek daha güvenli yeniden başlatmak istemiyorum.
RichVel

14
Kaşif için, btw ctrl-shift ve başlat menüsünün boş bir alana sağ tıklayın tutun ve "Çık Explorer" alırsınız - ps, oldukça Jeff'in cevabı ..
Mark Sowul

2
Yönetici olmayan bir dosya için bir metin dosyası için yardımcı olmuyor. Bir günlük dosyasına kimin yazdığını bilmem gerekiyor. Herhangi bir fikir?
Xaqron

183

Kaynak İzleyicisi'ni , Windows 7, 8 ve 10 ile yerleşik olarak gelenler için kullanabilirsiniz .

  1. Açık Kaynak İzleyicisi bulunabilir,
    • Başlat menüsünde Kaynak Monitörü veya resmon.exe dosyasını arayarak veya
    • Görev Yöneticinizdeki Performans sekmesinde bir düğme olarak
  2. CPU sekmesine git
  3. Kullanım arama alanını içinde İlişkili kolları bölümü
    • Aşağıdaki ekran resminde mavi oku görmek

Sapı bulduğunuzda, işlemi Resim ve / veya PID sütununa bakarak tanımlayabilirsiniz.

Uygulamayı normalde yaptığınız gibi kapatmayı deneyebilir veya bu mümkün değilse, tanıtıcıya sağ tıklayıp işlemi doğrudan oradan kesebilirsiniz. Tereyağından kıl çeker gibi!

Kaynak İzleyicisi ekran görüntüsü

Orijinal yanıtımdan kopyalandı: https://superuser.com/a/643312/62


2
Bu programı Windows 8'de bulmanın zor olabileceğine dikkat çekiyor - 'resmon.exe' araması onu bulmalı.
Kylotan

4
@Kylotan, Zaman kaybetmeden aramayı durdur. Sadece resmon doğrudan
cmd'den

1
@Pacerier: Güzel. Windows yolunda olan şeylere alışık değilim.
Kylotan

Bu bana daha iyi 'Sap | FindStr 've' Unlocker 'alternatifleri, aynı zamanda etkili olmalarına rağmen
Marcus Vinicius Pompeu

4
Windows 10'da hala geçerlidir ve Görev Yöneticisi -> Performans sekmesi içindeki "Kaynak İzleyicisini Aç" düğmesini kullanarak bulunabilir.
Norman Breau

92

Openfiles komutunu deneyin .


10
Bir yerleşik komut için +1, ancak kişisel olarak ProcessExplorer'ı çoğu zaman kullanıyorum.
RBerteig

Gerçekten yardımcı.
marko

7
HATA: Hedef sistemde 32 bit işletim sistemi çalışıyor olmalı.
Bozojoe

4
64 işletim sistemi için çalışmıyor!

12
Bu, Windows 2012R2 64bit için çalışıyor gözüküyor, ancak çalıştırarak openfiles /local onve yeniden başlatarak "açık yerel izleme" hizmetini etkinleştirmeniz gerekiyor . Bu, bu özelliği çok kullanışlı değil yapar.
Guss

82

Sadece kapanma kollarına çok dikkat edin; tanıtıcı geri dönüşümü nedeniyle düşündüğünüzden bile daha tehlikeli - eğer dosya tanıtıcısını kapatırsanız ve program başka bir şey açarsa, kapattığınız orijinal dosya tanıtıcısı bu "başka bir şey" için tekrar kullanılabilir. Ve şimdi program devam ederse ne olduğunu tahmin edin, dosya üzerinde çalıştığını düşünün (kimin işini kapattıysanız), aslında dosya işleyicisi şimdi başka bir şeye işaret ediyor.

Raymond Chen'in bu konuyla ilgili yayınına bakınız.

Bir arama dizini hizmetinin indeksleme için açık bir dosyası olduğunu, ancak geçici olarak sıkışıp kaldığını ve dosyayı silmek istediğinizi varsayalım, bu nedenle tutamacı kapalı duruma zorla zorlarsınız. Arama dizini hizmeti, bazı bilgileri kaydetmek için günlük dosyasını açar ve silinen dosyanın tanıtıcısı, günlük dosyasının tanıtıcısı olarak geri dönüştürülür. Sıkışmış işlem sonunda tamamlandı ve arama dizini hizmeti nihayet açık olan bu tanıtıcıyı kapatmaya başladı, ancak günlük dosya tanıtıcısını istemeden kapadı.

Arama dizini servisi başka bir dosya açar, bazı kalıcı durumları güncelleyebilmesi için yazmak için bir yapılandırma dosyası söyleyin. Günlük dosyasının tanıtıcısı, yapılandırma dosyasının tanıtıcısı olarak geri dönüştürülür. Arama dizini hizmeti bazı bilgileri günlüğe kaydetmek istiyor, bu nedenle günlük dosyasına yazar. Ne yazık ki, günlük dosyası tanıtıcısı kapatıldı ve tanıtıcı, yapılandırma dosyası için yeniden kullanıldı. Kaydedilen bilgiler konfigürasyon dosyasına girerek onu bozar.

Bu arada, kapatmaya zorladığınız başka bir tanıtıcı, verilerin bozulmasını önlemeye yardımcı olmak için kullanılan bir muteks tanıtıcısı olarak yeniden kullanıldı. Orijinal dosya tanıtıcısı kapatıldığında, mutex tanıtıcısı kapatılır ve veri bozulmalarına karşı korumalar kaybolur. Hizmet ne kadar uzun süre çalışırsa dizini o kadar bozuk olur. Sonunda, birileri endeksin yanlış sonuçlar döndürdüğünü fark ediyor. Hizmeti yeniden başlatmaya çalıştığınızda, yapılandırma dosyaları bozulmuş olduğundan başarısız olur.

Sorunu, arama dizini hizmetini yapan şirkete bildirirsiniz ve dizinin bozuk olduğunu, günlük dosyasının gizlice günlüğe kaydetmeyi durdurduğunu ve yapılandırma dosyasının çöpe yazıldığını belirlerler. Bazı yoksul teknisyenlere, hizmetin neden dizinlerini ve yapılandırma dosyalarını bozduğunu anlamada umutsuz bir görev verilir; bu, yolsuzluk kaynağının bir tanıtıcıyı zorladığınızdan habersiz olduğunun farkında değildir.


12
Önemli uyarı, bu en üste yaklaşmalıdır - yeniden başlatma muhtemelen sessizce bozuk bir dosyadan daha iyidir.
RichVel

6
+1 Bu kesinlikle beni zorla kapalı tutma kolları hakkında iki kez düşündürecek! Bana göre, Windows'un sayıyı artırmaya devam etmek yerine yalnızca gerektiğinde etrafını sarmak yerine hemen kapalı bir tanıtıcı numarasını tekrar kullanması garip görünüyor. Bu, en azından bu problemin ortaya çıkma ihtimalini büyük ölçüde azaltacaktır.
EM0

1
@RichVel Suçlu sürecini sonlandırmak, muhtemelen tam bir yeniden başlatmadan daha iyidir.
Dmitry Grigoryev

@DmitryGrigoryev - iyi nokta, ve aslında daha önce burada
RichVel

2
Bu çok önemli bir uyarıdır, ancak soruyu cevaplamaz Windows'ta bir dosyayı açık tutan hangi sürecin nasıl olduğunu nasıl bulursunuz?
Ploni

29

Geçmişte bu tür işlemleri bulmak için Handle'ı başarılı bir şekilde kullandım .


3
Bu aracı her zaman kullanırım. Bir USB sürücüsünü çıkaramazsam, sadece "handle H:" (ya da sürücü harfi ne olursa olsun) yazarım. Hepsinden iyisi, yakın tutamaçları zorlamak için kullanabilirsiniz.
Chris Thompson



7

Sadece açıklığa kavuşturmak için, bunun nedeni, CreateFile API çağrısını doğru kullanmamaktaki hatalı uygulamaların 3. parti uygulamalarının Windows’taki herhangi bir şey olduğundan daha fazla kullanılmasıdır. Belki de CreateFile tasarımının bir sonucudur, ancak bitti ve geri dönemeyiz.

Temel olarak, bir Windows programında bir dosyayı açarken, paylaşılan erişime izin veren bir bayrak belirtme seçeneğiniz vardır. Bayrağı belirtmezseniz, program dosyaya özel erişim sağlar.

Şimdi, eğer Explorer buradaki suçlu gibi görünüyorsa, sadece yüzeyde olması ve gerçek suçluların, tüm dosyaları kendi amaçları için bir klasörde açan bir kabuk uzantısı yükleyen bir şey olduğu ya da kendi amaçları için olduğu durum olabilir. Bunu yaparken gung-ho ya da kendisinden sonra düzgün bir şekilde temizlenmiyor. Symantec AV bunu daha önce yaparken gördüğüm bir şeydi ve diğer AV programları da suçlayacak olsaydı şaşırmam. Kaynak kontrol eklentileri de hatalı olabilir.

Bu yüzden gerçekten bir cevap değil, sadece kötü bir şekilde yazılmış bir 3. parti program olabileceği için Windows’u her zaman suçlamamanız için bir tavsiye (dosya kilitlemesine sahip herhangi bir işletim sisteminde de olabilir, ancak herhangi bir unix tabanlı işletim sistemi tarafından paylaşılan erişim varsayılan).


1
Windows tarayıcımın çalışma dizinindeki Thumbs.db dosyalarını her zaman kilitlediği, ancak çalışma dizinini değiştirdiğimde her zaman kilidini açmadığı için bir üçüncü taraf uygulamasını suçlamam. En azından pencereyi kapattığım zaman kilidi
Alexander

@Darth, Microsoft'tan bir pazarlamacı mısınız?
Pacerier

6

Uzak bir sunucuda, bir ağ paylaşımını kontrol ederken, Bilgisayar Yönetimi konsolu kadar basit bir şey bu bilgileri görüntüleyebilir ve dosyayı kapatabilir.


Kesinlikle, neden bu kadar karmaşık cevaplar var?
Rohit Gupta

6

Bir dosyayı açık tutan Apropos Explorer: "Silmeniz gereken bir dosyada bu olduğunda, tanıtıcıyı kapalı tutma ya da yeniden başlatma seçeneğine sahipsiniz."

Sadece Explorer'ı sonlandırabilirsin.

Bu bir kerelik bir şeyse (Explorer normalde bu dosyayı açık tutmuyor) o zaman oturumu kapatmayı ve tekrar oturum açmayı hile yapacağımı tahmin ediyorum.

Aksi takdirde, masaüstü Gezgini işlemini sonlandırın ve gittiğinde istediğinizi yapın. İlk önce cmd.exe dosyasının bir kopyasını başlatın (amaçlanan temizliği yapmak için bir UI'ye ihtiyacınız var). Çalışan masaüstü olmayan Kaşifler olmadığından emin olun. Ardından, son Gezgin'i, örneğin Görev Yöneticisi ile öldürün. Komut isteminde ne istersen yap. Son olarak, komut isteminden Explorer'ı çalıştırın ve masaüstüne dönecektir.

Bazı systray programları kabuğun yeniden başlatılması ile baş edemezse, bir miktar rahatsızlık olabileceğini tahmin ediyorum.


1
Bu, kolu kapatmaktan çok daha güvenli ve yeniden başlatmadan daha az rahatsız edici. Diğer programlar için de geçerlidir - Sık sık bir Microsoft Office programının dosyaları kapattıktan sonra bile kilitlendiğini tespit ediyorum.
RichVel

5

Dosyalar yerel süreçler (kilitlenebilir unlocker hisseleri içeri giren dosya erişimi tarafından kullanımı araçtır) ve.

Windows'ta yerel bilgisayardaki hangi dosyaların uzak bilgisayar tarafından açılıp / kilitlendiğini gösteren bir dosya vardır (dosyanın bir dosya paylaşımından açılmasını sağlar):

* Select "Manage Computer" (Open "Computer Management")
* click "Shared Folders"
* choose "Open Files"

Orada bile zorla dosyayı kapatabilirsiniz.




2

Yukarıda belirtilen cevaplar, bir program işleminin dosya tanıtıcısını açık tuttuğu durumları kapsar (neyse ki) çoğu zamandır - ancak bazı durumlarda (şu anda bu sistemde olduğu gibi) sistemin kendisi bir dosya tanıtıcısını tutar. açık.

Bu işlemi tanımlayıcıyı yukarıdaki işlem explorer'lı dosya tanıtıcı tutma işlemini bulmak için talimatları izleyerek ve işlem adının 'sistem' olarak listelendiğini not ederek veya kaynak izleyiciyi kullanarak ve hiçbir resmin gösterilmediğini not ederek talimatları izleyerek tanımlayabilirsiniz. ilgilendiğiniz dosyada açık bir dosya açıklığı olması (her ne kadar belli ki bir şey dosyayı düzenleyemez / silemezsiniz.

Bu olursa, seçeneğiniz (farkında olduğum kadarıyla) yeniden başlatmak veya bu dosyayla bir şey yapmayı unutmaktır.


0

Ben açık var exteneded Görev Yöneticisi Jeremy ZAWODNY blogunda tarafından bir süre önce ve çok süreçlerle ilgili başka bilgi sorunların izini harika. Özellikle Standart Görev Yöneticisi'nin bitmeyeceği işlemleri öldürmek için, yukarıdaki gibi Process Explorer için de +1.


0

Bir dosya FILEMON ve açık dosyaları ve tutamaçları gösterir. Canlı izlerseniz ekranına yetişmek zor, çok çabuk geçiyor. Ancak canlı gösterilmesini durdurabilir ve tüm açık / yazma etkinliklerini izleyebilirsiniz. Şimdi Microsoft'a ait, ancak başlangıçta Sysinternals'a ait


1
Bunun güncellenmiş hali proses monitörüdür. Burada bulabilirsiniz: http://technet.microsoft.com/en-us/sysinternals/bb896645
yitwail
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.