当某个文件操作以某种方式被调用时(例如打开或关闭),是否可以在操作系统发出请求之前处理它,并且如果可能的话取消.NET?如果.NET没有这样的能力,我该怎么做?是否有可能使用.NET跟踪文件操作?
回答
你问做什么可以做。例如,病毒扫描程序一直都在使用它。您可以使用Process Monitor轻松监控文件活动。您也可以使用FileSystemWatcher Class在C#中进行编程。但是试图阻止程序打开或试图阻止程序访问文件不能在C#中完成。您将需要使用C或C++。您需要创建一个File System Filter Driver。这是一个复杂的事情,但它正是你需要的。引用MSDN:
A file system filter driver intercepts requests targeted at a file system or another file system filter driver. By intercepting the request before it reaches its intended target, the filter driver can extend or replace functionality provided by the original target of the request. Examples of file system filter drivers include anti-virus filters, backup agents, and encryption products.
如果需要,您可以挂接Windows API。看看这样做,在.NET/C#:
的Sysinternals提供了一个免费的工具,所谓的进程监视器,一个功能是附加到任意的Windows进程(包括.NET应用程序)和捕获系统调用,包括文件打开,关闭,读取等。
您可以在Process Monitor Download Page下载。
编辑
当我重读你的问题,我看到你问拦截,并可能抵消这样的操作。我相信FileSystemWatcher
班将是您最好的选择,尽管我不认为它可以单方面取消文件操作 - 您需要建立某种合作机制来指示呼叫方放弃其操作。
我很确定你必须进入内核的这种操作,我很肯定这意味着你需要用C代码。看看File System Drivers。
更新:此SO link可能会有所帮助。
更新:加入谷歌搜索Windows File System Drivers
ALSO What is a good resource to get started with Windows file system driver development?
- 1. 是否有可能跟踪文件一次打开多少次?
- 2. 是否有可能在Ruby中“跟踪”文件?
- 3. 是否有可能跟踪上传的文件位置?
- 4. 是否有可能使用.NET来跟踪每个http/url重定向?
- 5. 是否有可能跟踪使用代理网站的用户?
- 6. 是否有可能使用array_walk_recursive跟踪数组中的位置?
- 7. 是否有可能在iDevice中跟踪用户活动
- 8. 使用SignalR时跟踪用户操作
- 9. 使用omniture sitecatalyst跟踪用户操作
- 10. 使用xcart是否有可能使用谷歌分析跟踪成功购买?
- 11. 是否有可能跟踪所有传出的WCF呼叫?
- 12. 是否有可能跟踪目标手机没有网络
- 13. 是否有可能从hg内部的.hg目录中跟踪文件?
- 14. 是否有可能只跟踪一个git分支中的文件夹?
- 15. 是否有可能更改JBoss 5.1写入其引导跟踪的文件夹?
- 16. .NET跟踪文件不能正常工作
- 17. 是否可以使用Google Analytics从一个文件跟踪子文件夹?
- 18. 使用操作上下文跟踪相关事件的问题
- 19. 使用glimpse返回文件的跟踪控制器操作
- 20. 是否有可能使用java制作操作系统?
- 21. 是否有可能使用“AND”操作符作为“ConditionalAttribute”?
- 22. 跟踪文本文件是否有或没有特定符号
- 23. 是否有可能在.NET
- 24. 文件上传/操作/下载不使用服务器:是否有可能?
- 25. github - 是否有可能跟踪我的回购访问者?
- 26. 是否有可能跟踪脚本运行的总时间?
- 27. 是否有可能跟踪Xcode C++编译依赖关系?
- 28. 是否有可能跟踪另一个Android设备
- 29. 是否有可能跟踪对MATLAB中变量的更改?
- 30. 是否有可能跟踪ObjectContext.SaveChanges的进度?
链接不再有效。 –
@JamesWilkins它一定是暂时的。这两个链接都为我工作。最好 – kenny