2008-10-28 163 views
16

我希望我的應用程序清除它使用的所有臨時文件,問題是並非所有臨時文件都在我的控制之下,所以我只想「殘酷地」解鎖它們以便以編程方式刪除它們。如何解鎖被.NET中的進程鎖定的文件

+0

我不知道你的應用程序和文件正在使用,但如果你正在使用的FileStream操作與您文件,你必須關閉的FileStream和處置FileStream對象,然後您使用的文件(S)將成爲解鎖。 – milot 2008-10-28 12:44:19

回答

4

看看this文章。我認爲,即使使用interop,你也很難在C#中實現這一點,但編寫C++/CLI包裝程序集可能是一個很好的折中方案。還要注意,用戶需要具有SE_DEBUG特權才能工作。

+0

該文章中的ForceDel.zip文件(這是該答案的解決方案)不再可用...並且我也需要它! :( – kzfabi 2013-01-10 12:56:32

2

當然,你的應用是想清理其擁有的臨時文件,那麼你必須完全控制解鎖這些文件並將其刪除!

如果你想刪除所有臨時文件是否通過應用程序或以其他方式擁有的,你應該非常小心。原始應用程序可能應用了鎖,因爲它想要使用該文件!

如果你真的需要,你總是可以生成一個命令行應用程序,而不是試圖複製現有的工具,這將是在C#中艱難的功能。

+0

他們的文件是我的應用程序的一部分,但他們不是我的模塊的一部分,出於政治原因,我無法修改該模塊(並不真正想進入這些細節:-)),無論如何,我知道這是可以安全地殘酷地刪除這些文件。 – 2008-10-28 11:55:12

3

我這個掙扎的歡迎,並結束了剛剛脫殼而出,以解鎖的命令行執行。在我的情況下,它必須每天運行很多次,最終每天解鎖數千個文件而沒有任何問題。

0

看看這個thread在MSDN論壇上。有足夠的信息來做你想做的事,但不推薦。