【问题标题】:Is there a possibility to prevent files from deleting in specified directory?是否有可能防止文件在指定目录中被删除?
【发布时间】:2013-04-24 08:21:03
【问题描述】:

我有以下情况:我正在使用 .NET (C#) 中的 FileSystemWatcher 类监视一个文件夹。通过这个类,我可以知道文件是否被删除,但我想要以下行为:通过取消删除来防止文件被删除并将文件移动到我自己的临时目录,以便用户可以恢复文件。

是否有可能实现这种行为?我必须走的路是什么? 我可以参与一些全球性事件吗?是否只能使用自己的文件系统驱动程序? 还是在得知文件被我自己用WinAPI函数CreateFile删除后恢复文件?

提前感谢您的帮助

【问题讨论】:

  • 为什么不直接使用windows回收站呢?用户可以从那里恢复它(如果你愿意,也可以从你的应用程序中以编程方式)
  • 删除文件有哪些用例?是你的应用吗?外部(即资源管理器)?即它是你自己的应用程序,防止而不是恢复。
  • 用户可以从资源管理器、命令行等中删除文件。问题是用户可以硬删除此类文件。在这个特殊的文件夹中,应用程序应该可以在一段时间内恢复已删除的文件。
  • 为了保护他们不做(一些)愚蠢的事情,你可以打开卷快照服务。

标签: c# windows winapi filesystems hook


【解决方案1】:

FileSystemWatcher 不提供任何机制来拦截文件删除,只向您报告发生了什么。

有问题的文件有多大?根据这些文件的大小,实现(即破解)的一种方法是将文件缓存在其他地方,看不见,例如在内存或磁盘上。当您的应用程序启动时,运行文件并缓存它们(将它们复制到临时文件夹或将它们加载到内存中)。当文件被更改或创建时更新缓存,并提供一种在文件被删除时恢复它们的方法。它不漂亮,但它会完成工作。

【讨论】:

  • 感谢您的回答,但由于文件大小不受限制,我无法使用此解决方案
猜你喜欢
  • 2014-04-21
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 2015-10-16
  • 2013-02-07
  • 1970-01-01
相关资源
最近更新 更多