我正在動態加載程序集,需要防止加載的文件通過文件移動或文件剪切和粘貼進行移動。有什麼辦法可以防止在.NET中移動文件?
Windows確實會阻止加載的程序集被刪除。但是,我仍然可以將文件移動到同一卷中的不同目錄中。
你知道有什麼方法可以防止文件被移動嗎?
謝謝。
我正在動態加載程序集,需要防止加載的文件通過文件移動或文件剪切和粘貼進行移動。有什麼辦法可以防止在.NET中移動文件?
Windows確實會阻止加載的程序集被刪除。但是,我仍然可以將文件移動到同一卷中的不同目錄中。
你知道有什麼方法可以防止文件被移動嗎?
謝謝。
這可能不是最簡單或最正確的方法,但首先想到的是我在大學時做過的Windows服務項目。
這基本上是一個運行的服務,它掃描一個目錄,並且任何時候文件被改變它都會通知你。這可能是捕捉該目錄中的事件的某種方式,並且如果您知道您不想移動的其中一個程序集移動,只是通知用戶並且不要讓它移動?
也許這個鏈接將有所幫助,雖然我不知道哪個事件會被移動的文件拋出,我猜「改變」?
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6165137.html
希望這有助於!
如果是你所說的'FileSystemWatcher',那麼它就沒有什麼幫助,因爲我試圖阻止文件被移動,而不是檢測文件是否被移動。當你收到來自觀察者的通知時,該文件已被移動!我不想通過檢測移動的文件並將其恢復到原來的位置來解決問題。 – tranmq 2009-08-17 21:57:24
您對zaladane的回答評論確實觸及到了問題的心臟:
它[設置訪問權限]不防止文件被具有相同或更高權限的用戶被移動。
如果某人或某個進程擁有比您更高的訪問權限,那麼我認爲您可以做任何事情來阻止他們被移動。如果用戶需要文件夾的權限來安裝新程序集,則他們將有權移動文件。
我不得不通過使用FileStream的Lock(...)方法來鎖定文件。 – tranmq 2009-08-28 19:38:46