天天看點

無法删除的問題

 在我們使用Windows的過程中,會遇到各種各樣的問題。即使是最簡單的删除檔案也可能遇到麻煩,要麼系統提示“檔案正在被另一個人或程式使用”,要麼就是報告“通路被拒絕”(如圖1)如果你也遇到過這種情況,不妨看看本文。

  

 

  <b>原因一:檔案正在使用中</b>

  在删除檔案時,經常會遇到的一個問題是,檔案正在使用,無法删除。如果試圖删除以獨占通路而不是以共享通路方式打開,并且正在使用中的檔案時,系統就會出現錯誤提示:“無法删除###:檔案正在被另一個人或程式使用”。而另一種情況則是,能夠使用删除指令删除檔案,但在打開檔案的程序釋放該檔案之前,檔案實際上并未删除。

  要解決上述問題,需要确定擁有檔案打開句柄的程序,然後關閉此程序。在以前的Windows中,我們可以使用資源工具包的Oh.exe。但在XP中,安裝好的Support Tools卻不帶Oh.exe。不過,XP提供了一個新的Openfiles.exe指令行工具,它能夠報告程序打開的各個檔案。與Oh.exe相似,Openfiles.exe也要求打開系統核心監視,這會消耗一些記憶體,并降低系統操作的性能。打開系統監視的指令是“Openfiles /local on”,它會啟用系統全局标志“維護對象清單”,需重新啟動系統才能生效。重新啟動系統後,在指令提示符下執行不帶參數的“Openfiles”,即可看到各個程序打開檔案的清單(如圖2)。

  <b>原因二:檔案系統損壞</b>

  磁盤上的壞區、其他硬體故障或者軟體錯誤都可能會損壞檔案系統,使檔案出現問題而無法删除。典型操作失敗的方式可能各不相同,當檢測到檔案系統損壞時,通常會收到一條提示運作Chkdsk的資訊。

  如果遇到這種情況,可以在磁盤卷上運作Chkdsk實用工具以糾正任何存在的錯誤。根據損壞的性質,Chkdsk也許能夠恢複檔案資料,也許無法恢複,但Chkdsk可以使檔案系統傳回到一種在内部一緻的狀态。有關Chkdsk實用工具的指令及參數,可以在指令提示符下執行“Chkdsk /?”查閱。

  <b>原因三:檔案使用了存取控制清單</b>

  如果某個檔案使用了存取控制清單(Access Control List,簡稱ACL),而操作者又沒有相應的權限,那麼删除檔案時就可能出現“通路被拒絕”的提示(如圖3)。

  通常情況下,管理者具有取得任何檔案所有權的隐含能力,檔案所有者也具有修改檔案權限的隐含能力。不過,這些預設的權限是可以被修改的。

  要解決因ACL導緻檔案無法删除的問題,就必須以具有相應權限的使用者身份登入,或者是賦予自己删除檔案的權限,然後才能删除檔案。要注意的是,操作者必須擁有這些檔案的所有權才能更改權限。如果是因為檔案使用了不規範的ACL而不能使用某些安全工具顯示或修改其權限時,可以嘗試使用指令行工具Cacls.exe進行修改。

  <b>原因四:檔案名使用了一個保留名稱</b>

  衆所周知,像AUX、LPT1這樣的名稱是為舊式DOS裝置保留的。為了向後相容,在Windows中不允許使用這些檔案名,也不能使用典型的Win32檔案調用來建立它們。反之,如果檔案名是Win32命名空間中的一個保留名稱,則同樣可能無法删除此檔案。

  要解決此類問題,可以在Linux或其他非Windows的作業系統下重命名或删除該檔案。另外,如果能夠使用特定的文法指定到該檔案的路徑,也可以使用一些内置的指令繞過典型的Win32保留名稱檢查。例如,在Windows XP中使用以下指令,可以删除名為“lpt1”的檔案(Del指令後面加上“\\?\”來避免Windows檢查檔案名的合法性):

Del

\\?\c:\檔案路徑\lpt1

  <b>原因五:無效的檔案名稱</b>

  如果檔案名中包括一個無效名稱,例如檔案名有一個尾随空格,或一個尾随句點,或者檔案名僅由一個空格組成,同樣可能無法删除該檔案。值得一提的是,如果使用典型的Win32文法打開名稱中有尾随空格或尾随句點的檔案,則尾随空格或句點在打開實際檔案之前會被去掉。是以,如果在同一個檔案夾中有兩個分别名為“File.txt”和“File.txt ”的檔案(注意第二個檔案名後面的空格),當使用标準Win32調用打開第二個檔案時,實際上會打開第一個檔案。同樣,如果檔案的名稱僅是“ ”(一個空格字元),當嘗試使用标準Win32調用打開它時,實際上會打開該檔案的父檔案夾。在此情況下,如果嘗試更改這些檔案上的安全設定,就有可能會意外更改其他檔案上的設定。

  與解決檔案名使用保留名稱的方法類似,可以使用一種适當的内部文法删除此檔案。例如要删除包含尾随空格的檔案,可以使用如下指令:

\\?\ c:\檔案路徑\(尾随空格的檔案名)

  <b>原因六:檔案路徑太深無法通路</b>

  檔案位于比最大路徑字元數(MAX_PATH)更深的路徑中,可能導緻檔案無法通路,當然,這種情況較為少見。如果路徑深的原因是檔案夾名稱太長,最簡便的解決方案是使用自動生成的8.3名稱通路該檔案。如果8.3路徑也太長,可以從根檔案夾開始重命名檔案夾,縮短它們的名稱,以使目标檔案的路徑深度不超過MAX_PATH。若是檔案的深度超過128個檔案夾,可以通過建立一個網絡共享,使其位于檔案夾樹中盡可能深的位置,然後通過通路此共享來通路檔案。

  一般情況下,如果遇到因檔案路徑太深無法通路的情況,可以通過使用建立檔案的軟體來管理這些檔案。也就是說,如果有一個程式,它可以建立超過MAX_PATH的檔案,則我們也可以使用該程式來管理這些檔案。此外,對于通過網絡共享建立的深層次結構的檔案也可以通過使用同一共享來進行删除。

  前面介紹了Windows系統中檔案或檔案夾無法删除的幾種原因以及解決的方法。在某些情況下,可能還會遇到上述各種原因的不同組合,使得删除檔案的過程更加複雜。這就需要讀者能夠舉一反三,靈活應用微軟提供的各種實用工具進行解決了。

  <b>原因七:</b><b>Windows XP</b><b>中删除</b><b>AVI</b><b>檔案的問題</b>

  很多朋友可能會遇到Windows XP中無法删除AVI檔案的問題,這主要是由于Windows XP視訊預覽功能的Bug所導緻的。你可以嘗試用以下方法進行删除。

  方法一 在運作指令框中輸入“Regs-vr32/u Shmedia.dll”并回車,卸去Windows XP的視訊檔案預覽功能。當以後想要恢複視訊預覽功能時,再使用“Regsvr32Shmedia.dll”指令重新注冊即可。

  方法二 先打開指令提示符視窗,然後在任務管理器中結束Explorer程序,再從指令提示符視窗中切換到儲存視訊檔案的檔案夾下,用Del指令删除檔案。

  方法三 如果安裝了雙系統,可以從另一個系統,如Win98下進行删除。

繼續閱讀