如果不采取肮脏和讨厌的方式,我相信这在用户模式下是不允许的,即使使用 SE_BACKUP_NAME。
我认为肮脏和讨厌的事情:
- 找出哪个进程拥有句柄并编写代码以在该进程中运行并关闭句柄。
- 读取/解析 MFT/FAT 表
- 使用内核驱动程序
如果不采取肮脏和讨厌的方式,我相信这在用户模式下是不允许的,即使使用 SE_BACKUP_NAME。
我认为肮脏和讨厌的事情:
是的,有一种方法,尽管它可能不适合您的需求;它不脏也不讨厌,但它很重,也就是说,它的代码并不简单,如果你只是想读取一个文件,它会产生不成比例的系统负载。
但是,如果您需要这样做,这是我所知道的唯一合理且安全的解决方案:请参阅 MSDN 文档 on the Volume Shadow Copy Service。
现在大多数备份软件都使用 VSS。