有沒有辦法在Windows執行刪除之前檢測文件的刪除?我發現了FileSystemWatcher類,但是隻有在執行了刪除操作後纔會引發事件,但是我想在用戶/進程選擇刪除操作時捕獲刪除操作。您可以監視文件系統表,但要尋找更好的方法。謝謝你的幫助。攔截FILESytemCall刪除
0
A
回答
1
我覺得simpliest的方法是使用一個鉤子得到通知(並最終停止)的過程。它不能在.NET中完成,因此您必須爲DllImport
許多結構和P/Invoke功能很少。
讓我們從NtSetFileInformation
(未記錄的)函數開始您的工作。當需要刪除文件時(這是FileDispositionInformation
結構),這是所有其他功能調用的函數。
現在的問題是如何掛鉤該功能(祝你好運,這是不容易的)。一個不錯的選擇可以使用Microsoft Detours。以this article爲例。它的問題是它不是免費的。另一種解決方案(具有合理的價格和.NET界面)是Deviare,但我從來沒有試過甚至他們的免費版本,所以我不知道它有多好。如果別人知道一個好的攔截工具...
1
您需要一個文件系統過濾器驅動程序。不過,我強烈建議,如果你不知道答案,你可能不應該這樣做。
http://msdn.microsoft.com/en-us/library/windows/hardware/gg462968.aspx
0
或者可以試試ICopyHook接口。
http://msdn.microsoft.com/en-us/library/windows/desktop/bb776049%28v=vs.85%29.aspx
在CopyCallback方法使用在wFunc參數FO_DELETE,來指定刪除操作。
缺點: 只能防止在Windows Shell中刪除。
相關問題
- 1. 攔截鍵按刪除
- 2. 攔截從ngRepeat中刪除元素
- 3. Outlook 2007 - 攔截郵件刪除命令
- 4. 在WordPress中刪除渲染攔截JavaScript
- 5. 添加和刪除攔截器
- 6. 攔截器不攔截
- 7. java攔截器不攔截
- 8. AngularJs:排除從攔截
- 9. android上的攔截攔截器
- 10. 如何爲ILogger攔截攔截器
- 11. EJB 3.1攔截器是「攔截器」嗎?
- 12. 城堡攔截器不攔截
- 13. LightInject - 攔截不攔截依賴關係
- 14. EJB攔截器vs CDI攔截器
- 15. 如何通過攔截從實體中刪除NHibernate代理
- 16. 「攔截」用戶輸入到文本框中並將其刪除
- 17. 使用jQuery刪除右鍵單擊攔截器
- 18. 針對軟刪除的spring-data-mongodb的查詢攔截器
- 19. 在Android操作系統中刪除攔截文件
- 20. 在實體框架中添加和刪除攔截器
- 21. 從Struts2的堆棧中刪除攔截器
- 22. Okhttp 3.x動態地添加/刪除認證者/攔截者
- 23. 攔截localStorage.getItem()
- 24. 攔截出口
- 25. struts2的攔截
- 26. Response.Redirect攔截
- 27. 攔截在OSX
- 28. jquery攔截
- 29. HTTPS攔截
- 30. 攔截忽略
通過使用mhook庫來喚醒NtSetFileInformation API,工作就像一個魅力。多謝你們。 – vgeta