2010-04-13 48 views
2

在我的公司,我們正在編寫一個腳本來處理我們通常會手工完成的簡單任務。我正在使用c#刪除c:\ documents和settings \中的配置文件,只有幾個。這些將被簡單地留下。問題在於即使將代碼設置爲正常並將admin用戶標記爲所有者,它們也不會被刪除。他們說快速啓動文件夾的訪問被拒絕。我正在使用遞歸權限更改方法,我知道它的工作原理。與文件屬性相同的東西。爲什麼它不工作?我該如何解決?刪除Windows不希望我刪除的文件?

+0

哪個API調用失敗? – reuben 2010-04-14 07:43:27

回答

3

它可能不是權限問題,而是文件鎖定問題。兩者似乎都是權限問題。

+0

文件鎖定是通過將​​屬性設置爲正常來設置的屬性,對吧? – user315881 2010-04-13 20:35:28

+0

@ user315881:不,我的意思是文件被鎖定了一個對文件具有鎖定句柄的進程(通常意味着該文件已被寫入)。除了通過獲取鎖的進程以外,您無法關閉它。 – Randolpho 2010-04-13 20:46:57

+0

您可以使用名爲* Unlocker *的小型實用程序檢查鎖定手柄是否會導致刪除問題。它可以從網上免費下載。 – stakx 2010-04-13 20:56:55

0

這是非常棘手的,你將需要使用PInvoke調用本地API(我不確定哪些)。 Unlocker,解鎖其他進程正在使用的文件的實用程序會執行此操作。它尚未與Windows 7和某些版本的Windows的64位版本一起使用。

+1

Unlocker曾經很棒,但我認爲它是在1.8.6中添加了一個後門特洛伊木馬(這些'ebay'快捷鍵)。該網站聲稱,ebay快捷鍵已被刪除,並用'bing toolbar'取代,但我仍然對使用它有所懷疑。 – 2010-04-13 20:45:28

+0

是@Zach Johnson可悲的是這種情況 – TheVillageIdiot 2010-04-14 13:26:45

6

問題可能是其他進程已經打開這些文件或目錄的句柄。爲了幫助您找出哪些進程會受到責備,您可以使用Process Explorer的查找功能來查找它們。

(只是要清楚:這不是關於如何編寫代碼來刪除文件的建議,但對如何找出到底是什麼原因導致你目前的系統無法工作的建議)

1

你可以通過從http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

以管理員身份運行,並使用Find-> Handle或Dll來查看它是否被鎖定來驗證是否由文件鎖定而不是訪問控制造成的。

否則,您應該能夠獲得所有權並授予訪問權限,以便在沒有問題的情況下進行刪除。