Bagaimana Anda menemukan proses apa yang menahan file terbuka di Windows?


515

Satu hal yang mengganggu saya tentang Windows adalah kesalahan lama dalam berbagi . Seringkali Anda tidak dapat mengidentifikasi apa yang menahannya. Biasanya itu hanya editor atau penjelajah yang hanya menunjuk ke direktori yang relevan, tetapi kadang-kadang saya harus me-reboot komputer saya.

Ada saran tentang cara menemukan pelakunya?


12
Anda akan berpikir bahwa setelah sekian lama, orang-orang Windows akan memberi kita cara untuk melakukan ini dengan mudah dari dalam Explorer. Saya bertanya-tanya mengapa ini tidak terjadi?
Cawflands

6
Saya menemukan bahwa Explorer sering kali merupakan proses masalah yang menahan file tanpa alasan yang jelas.
Eddie

Saya tahu ini tidak banyak membantu Anda, tetapi saya pikir saya ingat bahwa ini adalah fitur yang direncanakan untuk rilis Windows berikutnya setelah vista dan 2008 server. atau mungkin itu hal WinFS. tidak yakin di mana saya membaca itu ...
Kip

lihat jawaban saya tentang superuser di sini , dalam ringkasan OpenedFilesView masih berfungsi pada 2019
Vijay

Jawaban:


440

Saya sudah sukses dengan Sysinternals Process Explorer . Dengan ini, Anda dapat mencari untuk menemukan proses apa yang membuat file terbuka, dan Anda dapat menggunakannya untuk menutup pegangan jika Anda mau. Tentu saja, lebih aman untuk menutup seluruh proses. Berhati-hatilah dan gunakan penilaian.

Untuk menemukan file tertentu, gunakan opsi menu Find->Find Handle or DLL... Ketikkan di bagian path ke file. Daftar proses akan muncul di bawah.

Jika Anda lebih suka baris perintah, suite Sysinternals termasuk alat baris perintah Handle , yang berisi daftar pegangan terbuka. Beberapa contoh tentang cara menggunakannya:

  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i e:\ - temukan semua file yang dibuka dari drive E:
  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i file-or-path-in-question

17
Anda dapat menutup gagangnya, tetapi perlu diingat, Anda menarik permadani dari bawah suatu aplikasi, hasilnya akan sangat tidak terduga.
WaldenL

12
@Walden: Tentu saja. YMMV. Dengan WinXP, saya sudah berkali-kali Explorer membuka pegangan tanpa alasan yang jelas dan menolak untuk menutupnya. Ketika ini terjadi pada file yang perlu Anda hapus, Anda memiliki pilihan untuk memaksa pegangan ditutup, atau reboot. Sejauh ini, setelah melakukan ini puluhan kali, saya tidak menderita efek buruk. Seperti halnya alat canggih, gunakan dengan hati-hati dan penilaian.
Eddie

5
Menutup pegangan dapat menyebabkan aplikasi menggunakan kembali pegangan pada file lain, menyebabkan korupsi - lihat jawaban Jeff di bawah ini: serverfault.com/a/15695/79266 ... jauh lebih aman untuk mematikan aplikasi yang menahan file tersebut terbuka, jika Anda tidak mau reboot
RichVel

14
Untuk penjelajah, btw, tahan ctrl-shift dan klik kanan area kosong dari menu mulai, dan Anda akan mendapatkan "Exit Explorer" - id, tidak cukup jawaban Jeff ..
Mark Sowul

2
Itu tidak membantu untuk file non-eksekutif dan file teks. Saya perlu tahu siapa yang menulis ke file log. Ada ide?
Xaqron

183

Anda dapat menggunakan Resource Monitor untuk ini yang terintegrasi dengan Windows 7, 8, dan 10.

  1. Open Resource Monitor , yang dapat ditemukan
    • Dengan mencari Resource Monitor atau resmon.exe di menu mulai, atau
    • Sebagai tombol pada tab Performance di Task Manager Anda
  2. Buka tab CPU
  3. Gunakan kolom pencarian di Associated Menangani bagian
    • Lihat panah biru pada tangkapan layar di bawah

Ketika Anda menemukan pegangan, Anda dapat mengidentifikasi proses dengan melihat kolom Gambar dan / atau PID.

Anda kemudian dapat mencoba untuk menutup aplikasi seperti biasa, atau, jika itu tidak mungkin, klik kanan pegangannya dan bunuh prosesnya langsung dari sana. Peasy mudah!

Tangkapan layar Monitor Sumber Daya

Disalin dari jawaban asli saya: https://superuser.com/a/643312/62


2
Perlu dicatat bahwa mungkin sulit untuk menemukan program ini di Windows 8 - pencarian untuk 'resmon.exe' harus menemukannya.
Kylotan

4
@Kylotan, Berhenti membuang waktu mencari. Jalankan resmon langsung dari cmd
Pacerier

1
@Pacerier: Bagus. Saya tidak terbiasa dengan hal-hal yang berada di jalur Windows.
Kylotan

Ini lebih cocok untukku daripada 'Tangani | Alternatif FindStr 'dan' Unlocker ', meskipun mereka juga efektif
Marcus Vinicius Pompeu

4
Masih valid di Windows 10 dan dapat ditemukan dengan menggunakan tombol "Open Resource Monitor" di dalam Task Manager -> tab Performance.
Norman Breau

92

Coba perintah openfiles .


10
+1 untuk perintah bawaan, meskipun saya pribadi menggunakan ProcessExplorer untuk sebagian besar waktu ini.
RBerteig

Sangat membantu.
marko

7
GALAT: Sistem target harus menjalankan OS 32 bit.
Bozojoe

4
tidak bekerja untuk 64 OS!

12
Ini terlihat berfungsi untuk Windows 2012R2 64bit, tetapi Anda harus mengaktifkan layanan "pelacakan lokal terbuka" dengan menjalankan openfiles /local ondan memulai kembali. Ini membuat fitur ini tidak terlalu berguna.
Guss

82

Berhati-hatilah dengan pegangan penutup; bahkan lebih berbahaya daripada yang Anda kira, karena menangani daur ulang - jika Anda menutup pegangan file, dan program membuka sesuatu yang lain, pegangan file asli yang Anda tutup dapat digunakan kembali untuk "sesuatu yang lain". Dan sekarang coba tebak apa yang terjadi jika program berlanjut, mengira itu bekerja pada file (yang pegangannya Anda tutup), padahal sebenarnya file handle itu sekarang menunjuk ke sesuatu yang lain.

lihat posting Raymond Chen tentang topik ini

Misalkan layanan indeks pencarian memiliki file yang terbuka untuk pengindeksan tetapi macet sementara dan Anda ingin menghapus file tersebut, sehingga Anda (secara tidak bijaksana) memaksa gagang ditutup. Layanan indeks pencarian membuka file log-nya untuk merekam beberapa informasi, dan pegangan ke file yang dihapus didaur ulang sebagai pegangan ke file log. Operasi macet akhirnya selesai, dan layanan indeks pencarian akhirnya mendapatkan untuk menutup yang menangani itu telah terbuka, tetapi akhirnya tanpa disadari menutup pegangan file log.

Layanan indeks pencarian membuka file lain, misalnya file konfigurasi untuk ditulis sehingga dapat memperbarui beberapa kondisi persisten. Pegangan untuk file log akan didaur ulang sebagai pegangan untuk file konfigurasi. Layanan indeks pencarian ingin mencatat beberapa informasi, jadi ia menulis ke file log-nya. Sayangnya, pegangan file log ditutup dan pegangan digunakan kembali untuk file konfigurasinya. Informasi yang dicatat masuk ke file konfigurasi, merusaknya.

Sementara itu, pegangan lain yang Anda tutup paksa digunakan kembali sebagai pegangan mutex, yang digunakan untuk membantu mencegah data dari rusak. Ketika pegangan file asli ditutup, pegangan mutex ditutup dan perlindungan terhadap korupsi data hilang. Semakin lama layanan berjalan, indeksnya semakin rusak. Akhirnya, seseorang memperhatikan bahwa indeks mengembalikan hasil yang salah. Dan ketika Anda mencoba me-restart layanan, itu gagal karena file konfigurasinya telah rusak.

Anda melaporkan masalah ke perusahaan yang membuat layanan indeks pencarian dan mereka menentukan bahwa indeks telah rusak, file log secara misterius berhenti logging, dan file konfigurasi ditimpa dengan sampah. Beberapa teknisi yang buruk diberi tugas yang tidak ada harapan untuk mencari tahu mengapa layanan merusak indeks dan file konfigurasinya, tidak menyadari bahwa sumber korupsi adalah bahwa Anda memaksa gagang ditutup.


12
peringatan penting, ini harus mendekati bagian atas - reboot mungkin lebih baik daripada file yang diam-diam rusak.
RichVel

6
+1 Ini tentu akan membuat saya berpikir dua kali tentang memaksa pegangan ditutup! Tampaknya aneh bagi saya bahwa Windows akan segera menggunakan kembali jumlah pegangan yang tertutup, daripada terus menambah jumlah dan hanya membungkus ketika diperlukan. Setidaknya itu akan sangat mengurangi kemungkinan masalah ini terjadi.
EM0

1
@RichVel Mengakhiri proses pelakunya mungkin lebih baik daripada reboot penuh.
Dmitry Grigoryev

@DmitryGrigoryev - poin bagus, dan sebenarnya saya sudah menyebutkannya di sini
RichVel

2
Ini adalah peringatan yang sangat penting, tetapi tidak menjawab pertanyaan. Bagaimana Anda menemukan proses apa yang menahan file terbuka di Windows?
Ploni

29

Saya telah menggunakan Handle dengan sukses untuk menemukan proses seperti itu di masa lalu.


3
Saya menggunakan alat ini sepanjang waktu. Jika saya tidak dapat mengeluarkan drive USB, saya cukup mengetik "handle H:" (atau apa pun huruf drive). Yang terbaik dari semuanya, Anda dapat menggunakannya untuk memaksa pegangan dekat.
Chris Thompson



7

Hanya untuk memperjelas, ini lebih mungkin merupakan hasil dari kesalahan aplikasi pihak ke-3 yang tidak menggunakan panggilan CreateFile API dengan benar daripada apa pun yang ada di Windows itu sendiri. Mungkin itu adalah konsekuensi dari desain CreateFile, tetapi dilakukan sudah selesai dan kami tidak bisa kembali.

Pada dasarnya ketika membuka file di program Windows Anda memiliki opsi untuk menentukan flag yang memungkinkan akses bersama. Jika Anda tidak menentukan benderanya, program akan mengambil akses eksklusif file tersebut.

Sekarang, jika Explorer tampaknya menjadi penyebabnya di sini, mungkin saja masalahnya hanya ada di permukaan, dan pelakunya yang sebenarnya adalah sesuatu yang menginstal ekstensi shell yang membuka semua file dalam folder untuk keperluannya sendiri tetapi terlalu gung-ho dalam melakukannya, atau itu tidak membersihkan dengan benar setelah itu sendiri. Symantec AV adalah sesuatu yang pernah saya lihat sebelumnya, dan saya tidak akan terkejut jika program AV lain juga yang harus disalahkan. Plug-in kontrol sumber mungkin juga salah.

Jadi bukan benar-benar jawaban, tetapi hanya beberapa saran untuk tidak selalu menyalahkan Windows untuk apa yang mungkin merupakan program pihak ke-3 yang ditulis dengan buruk (sesuatu yang juga dapat terjadi pada OS lain yang memiliki penguncian file implisit, tetapi OS berbasis unix apa pun telah berbagi akses oleh default).


1
Saya tidak akan menyalahkan aplikasi pihak ke-3 pada kenyataan bahwa windows explorer saya selalu mengunci file Thumbs.db di direktori kerjanya, tetapi tidak selalu membukanya ketika saya berpindah direktori kerja. Setidaknya mereka tidak terkunci ketika saya menutup jendela, saya tidak perlu membunuh SEMUA penjelajah ...
Alexander

@Arth, Apakah Anda seorang pemasar dari Microsoft?
Pacerier

6

Pada server jarak jauh, ketika Anda memeriksa berbagi jaringan, sesuatu yang sederhana seperti konsol Manajemen Komputer dapat menampilkan informasi ini dan menutup file.


Tepatnya, mengapa ada jawaban yang begitu rumit?
Rohit Gupta

6

Apropos Explorer menahan file terbuka: "Ketika ini terjadi pada file yang perlu Anda hapus, Anda memiliki pilihan untuk memaksa pegangan ditutup, atau me-reboot."

Anda bisa mengakhiri Explorer.

Jika ini adalah satu kali (Explorer biasanya tidak menahan file ini terbuka) maka saya kira log off dan masuk kembali akan melakukan trik.

Jika tidak, matikan proses Explorer desktop dan lakukan apa yang Anda inginkan saat itu hilang. Pertama-tama mulailah menyalin cmd.exe (Anda perlu UI untuk melakukan pembersihan yang Anda inginkan). Pastikan tidak ada Penjelajah non-desktop yang berjalan. Kemudian bunuh Explorer terakhir dengan, misalnya, Task Manager. Lakukan apa yang Anda inginkan di command prompt. Akhirnya, jalankan Explorer dari command prompt, dan itu akan menjadi desktop.

Saya kira mungkin ada beberapa ketidaknyamanan residual jika beberapa program systray tidak dapat menangani shell restart.


1
Ini jauh lebih aman daripada menutup pegangannya, dan lebih sedikit mengganggu daripada me-reboot. Berlaku juga untuk program lain - Saya sering menemukan program Microsoft Office menyimpan kunci pada file bahkan setelah saya menutupnya.
RichVel

5

File dapat dikunci oleh proses lokal ( unlocker adalah alat untuk digunakan) dan dengan akses file yang masuk melalui share.

Ada fungsi bawaan di Windows yang menunjukkan kepada Anda file apa di komputer lokal yang dibuka / dikunci oleh komputer jarak jauh (yang memiliki file tersebut dibuka melalui berbagi file):

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

Di sana Anda bahkan dapat menutup file dengan paksa.




2

Jawaban yang dipilih di atas mencakup situasi di mana proses program menahan file handle terbuka, yang (untungnya) sebagian besar waktu - namun dalam beberapa kasus (seperti yang terjadi pada sistem ini saat ini), sistem itu sendiri memegang file handle Buka.

Anda dapat mengidentifikasi situasi ini dengan mengikuti instruksi untuk menemukan proses memegang file menangani dengan proses explorer di atas, dan mencatat bahwa nama proses terdaftar sebagai 'sistem', atau dengan mengikuti petunjuk menggunakan monitor sumber daya dan mencatat bahwa tidak ada gambar yang ditampilkan memiliki filehandle terbuka pada file yang Anda minati (Meskipun jelas ada sesuatu yang dilakukan karena Anda tidak dapat mengedit / menghapus file dll).

Jika itu terjadi, opsi Anda (sejauh yang saya ketahui) adalah untuk memulai ulang - atau lupakan melakukan apa pun dengan file itu.


0

Saya dihidupkan ke Task Manager Exteneded beberapa waktu yang lalu oleh blog Jeremy Zawodny, dan itu bagus untuk melacak info lebih lanjut tentang proses juga. +1 untuk Process Explorer seperti di atas juga, terutama untuk mematikan proses yang tidak akan diakhiri oleh Task Manager standar.


0

Ada alat FILEMON dan menunjukkan file dan pegangan terbuka. Sulit untuk mengimbangi tampilannya jika Anda menontonnya langsung, ia melakukannya dengan cepat. Tetapi Anda dapat menghentikannya menampilkan langsung dan Anda dapat menonton semua aktivitas buka / tulis file. Sekarang dimiliki oleh Microsoft tetapi awalnya oleh Sysinternals


1
Versi terbaru dari ini adalah monitor proses. Anda bisa mendapatkannya di sini: http://technet.microsoft.com/en-us/sysinternals/bb896645
yitwail
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.