簡體   English   中英

如何在C#中強制刪除鎖定的文件

[英]How can I force the deletion of locked files in C#

我有一個必須刪除文件的情況。 我不知道,也不在乎誰擁有文件。 我必須刪除它,他們可能會為我所關心的一切暗戀。 (我不想取消鎖定任務)

我想到的唯一解決方案是使用http://www.emptyloop.com/unlocker/命令行界面。

MoveFileEx 不是我的選擇,因為我無法重新啟動計算機。

還有其他C#ish方法/庫嗎?

我不喜歡使用控制台應用程序API

以防萬一,我知道所涉及的風險,也不需要講解為什么這是不好的做法。 如果你知道我該怎么做。 非常感謝你!

如果您想講講為什么這不好的話,那就別找別人去打擾##

我無法給您解決方案,但可以為您指明方向。

Window的Process Explorer具有可以使您搜索句柄的功能: 在此處輸入圖片說明

然后,當您選擇該句柄時,您將轉到擁有該句柄的進程,然后右鍵單擊它並關閉該句柄,還可以解除該進程對該文件的鎖定。

因此,基本上,您需要找出Process Explorer在使用哪些API調用,然后在您的應用程序中自行執行。

由於鎖的性質,我認為您要的是不可能的。
如果其他程序可以在讀取數據時抓取文件並擦除它們,您會感覺如何?

我相信這些解鎖程序會檢測到該進程,並嘗試迫使其以一種或另一種方式釋放它的鎖(甚至可能關閉其進程)。
盡管這可能適用於大多數應用程序,但有些應用程序會更具攻擊性(例如,考慮使用病毒掃描程序)。

因此,也許您需要問問自己,是否要增加獲得鎖的機會,或者是否需要絕對確定要獲得鎖。

編輯:
假設您可以終止更衣程序,並且您確實要清除這些文件(無論后果如何),那么您可以找到持有該鎖並關閉它的進程。 此線程中,他們提供了一些解決方案,用於通過句柄,win32 dll甚至計划.NET代碼跟蹤哪個進程持有鎖(在c#代碼中)。

放棄
請注意,關閉這樣的過程將對該程序的一致性產生嚴重影響,您甚至可能做的不好甚至更好(假設它正在寫入數據庫的狀態,例如中途終止)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM