2015-09-26 48 views
-1

FileSystemWatcher的處理移動文件 - 另一種解決方案

我試圖用FileSystemWatcher的檢測,如果一些文件或目錄已被移動到另一個位置。問題是,我不得不用onCreated和onDeleted事件來處理這個問題,但也有使用此解決方案

  • 我怎麼能檢測到變化,如果我將選擇多個文件,然後按Ctrl + C,Ctrl鍵許多問題+ V,或右鍵單擊並選擇複製,然後粘貼到相同的目錄中?
  • 我如何檢測,如果我將選擇多個目錄?
  • 最後一個,如果我模擬移動文件?我可以刪除文件,並在不同的地方創建相同的名稱。

我知道我可以使用定時器,進程鎖定檢測,驗證哪個進程使用文件(如果explorer.exe然後它可能是移動文件),但這種解決方案並不完美,它是非常無效的。我對此如何解決這個問題感到不安,我決定用低級語言來實現它。這可能使用C或彙編程序來做到這一點嗎?我知道每個東西都可以使用匯編程序,所以有可能在asm中實現這一點?我想使用匯編程序或C創建我自己的FileSystemWatcher,但我應該在哪裏尋找信息如何做到這一點?

+0

你指的是C#的'System.IO.FileSystemWatcher'嗎?作爲一個涉及文件系統監控項目的人,我只能告訴你:這是非常困難的,你應該使用任何高層次的設施,除非你願意花費大量的時間,否則不會更深入。 –

+0

謝謝,我在stackoverflow上看到了一個問題,在.NET中使用了一些包含OS更改日誌的數據庫的高級解決方案,但是這僅適用於特定系統 - Windows XP Professional with SP3(如果我沒有誤導) ,現在我正在尋找這個線程,我找不到 – shx

回答

0

當文件系統接收到來自操作系統的相應請求時,可以使用文件系統過濾器驅動程序輕鬆檢測相同文件系統內的文件移動。其他場景,如移動到另一個磁盤或通過複製/刪除序列移動,即使使用過濾器驅動程序也難以追蹤,因爲您需要在已創建/寫入的文件與正在刪除的文件(可能位於另一個磁盤)。

如果你打算寫一些安全機制(如DRM),那麼我需要提醒複製(如加密或壓縮),這使你的任務更加困難時,數據可以被改變。

不過你可以看看文件系統過濾驅動程序 - 如果你決定去與檢測文件系統事件,如驅動程序是一個更可靠和強大的機制比FileSystemWatcher的。

相關問題