找出資料夾或檔案被誰鎖定 - 硬漢解法
| | 2 | |
Windows 的檔案有時會因被鎖定無法修改刪除,新版 Windows 很貼心,警示訊息會顯示鎖定來源:補充案例
但偶爾會遇到「無法完成動作,因為資料夾或資料夾中的檔案已在其他程式開啟」這種鎖定來源不明的狀況:
這種狀況用嘗試一個個檔案更名或刪除的土法子有時能找到兇手,網路上也有不少解決這種問題的專門軟體,但身為作風強悍的茶包射手,為這點小事特別去找軟體一點都不酷,要解 100 種問題,難道要下載或安裝 100 種軟體?活用工具就能解決的事,何必一天到晚花時間去找別人寫好的專用軟體。就像水電維修界有句名言:
沒有噴一次 WD-40 解決不了的問題,如果有,那就噴兩次!
(謎:不要瞎掰好嗎?)
圖片來源:男人的香水(WD-40)完整介紹 by 超認真少年
射茶包神器,Sysinternals 魔法工具包,向來是本部落格的固定班底,像是 Process Monitor、Process Explorer、Disk Usage, du、Access Check、Process Dump、RAMMap、VMMap、TCP View、Handle... 都曾在文章出現,相信大家應該不陌生。其中 Process Explorer 跟 Handle 就能用來查檔案鎖定。
(如果你常在查 Windows 問題,千萬不要錯過 Sysinternals 工具組,程式每個都很輕薄短小,執行效能又好,免安裝,甚至可以直接從網路磁碟機執行。)
用 Process Explorer 查詢檔案鎖定操作很簡單,但沒那麼直覺,找到 Find/Find Handle or DLL... (或按 Ctrl-Shift-F):
輸入檔名或資料夾路徑,按 Search,搞定!
如果你覺得滑滑鼠太娘,要開 Cmder/Shell 敲鍵盤下指令才夠 Man,那麼可以用 handle D:\lab\TempMVC
,一樣可以得到答案:
以上技巧分享給想走硬漢風格的茶包射手們參考。
Tips of using Process Explorer and Handle of Sysinternals tools to find out who is locking the file.
Comments
# by Latishaaaaaa
不好意思,想來進階求救看看... 原先是意外把發布後的檔案不小心塞到 C 槽路徑,結果冒出了幾個神秘檔案。 嘗試刪除時跳出訊息:「其他應用程式已開啟此檔案,所以無法完成動作。 請關閉檔案,然後再試一次。」 檔案們是:"C:\DumpStack.log.tmp"、"C:\hiberfil.sys"、"C:\pagefile.sys"、"C:\swapfile.sys" 但我確實沒有開啟過他們,應該? 嘗試過您這篇的解法,但沒有搜出任何結果。 也嘗試過網路上的:資源監視器 > CPU > 關聯控制代碼 > 輸入檔案路徑,也沒搜出任何結果。 想來詢問看看是否還有其他作法? 感謝您。
# by Jeffrey
to Latishaaaaaa,hiberfile.sys、pagefile.sys、swapfile.sys 是主機休眠跟虛擬記憶體的相關系統檔案,不該也不能被手工刪除。至於 C:\DumpStack.log.tmp 看起來也是作業系統在用的,應不用處理。 https://answers.microsoft.com/en-us/windows/forum/all/what-is-dumpstacklogtmp-and-how-do-i-open-it/8e954dc6-973e-449e-bfd4-158ebb1daa78 我的經驗是:當檔案因權限或系統保護無法存取時,有時也會顯示「其他應用程式已開啟此檔案」,未必是真的被程式開啟。