2009-08-17 67 views
0

我正在動態加載程序集,需要防止加載的文件通過文件移動或文件剪切和粘貼進行移動。有什麼辦法可以防止在.NET中移動文件?

Windows確實會阻止加載的程序集被刪除。但是,我仍然可以將文件移動到同一卷中的不同目錄中。

你知道有什麼方法可以防止文件被移動嗎?

謝謝。

+1

我不得不通過使用FileStream的Lock(...)方法來鎖定文件。 – tranmq 2009-08-28 19:38:46

回答

1

您可以將權限設置爲不希望用戶移動的文件夾。 您將需要使用System.Security.AccessControl來獲取文件或文件夾訪問控制。這在msdn上的post可以幫助你使用它

+0

這似乎是一個好主意。我會調查它。謝謝。 – tranmq 2009-08-17 22:00:26

+0

這不適用。 – tranmq 2009-08-17 22:28:04

+0

怎麼這樣?你的意思是你不能設置程序集駐留的文件夾的權限嗎? – ak3nat0n 2009-08-18 17:50:43

0

這可能不是最簡單或最正確的方法,但首先想到的是我在大學時做過的Windows服務項目。

這基本上是一個運行的服務,它掃描一個目錄,並且任何時候文件被改變它都會通知你。這可能是捕捉該目錄中的事件的某種方式,並且如果您知道您不想移動的其中一個程序集移動,只是通知用戶並且不要讓它移動?

也許這個鏈接將有所幫助,雖然我不知道哪個事件會被移動的文件拋出,我猜「改變」?

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6165137.html

希望這有助於!

+0

如果是你所說的'FileSystemWatcher',那麼它就沒有什麼幫助,因爲我試圖阻止文件被移動,而不是檢測文件是否被移動。當你收到來自觀察者的通知時,該文件已被移動!我不想通過檢測移動的文件並將其恢復到原來的位置來解決問題。 – tranmq 2009-08-17 21:57:24

0

您對zaladane的回答評論確實觸及到了問題的心臟:

它[設置訪問權限]不防止文件被具有相同或更高權限的用戶被移動。

如果某人或某個進程擁有比您更高的訪問權限,那麼我認爲您可以做任何事情來阻止他們被移動。如果用戶需要文件夾的權限來安裝新程序集,則他們將有權移動文件。

相關問題