【问题标题】:Copy files from VSS从 VSS 复制文件
【发布时间】:2012-10-06 07:15:39
【问题描述】:

我正在开发一个 Windows VSS 应用程序,我需要一些关于它的帮助。 创建快照后,如何使用 C/C++ 从卷快照中复制文件或文件块(扇区),最好是文件块。有人可以指导我吗,或者可以指导我查看任何相同的示例或文档。

提前致谢。

【问题讨论】:

    标签: windows copy snapshot volume-shadow-service sector


    【解决方案1】:

    您可以使用常规函数访问 VSS 快照项

    CreateFile()打开文件

    ReadFile()BackupRead() 读取/备份其数据

    只有项目的根路径会改变

    (例如,\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\ 而不是 C:\

    你到底想知道什么?

    【讨论】:

    • 您好,感谢您的回复,我想复制快照中存在的所有文件块(扇区)。那么您建议的方法是否适用于此?
    • 我还要再问一个问题,我已经将卷影副本作为挂载点公开到一个目录,现在该目录是只读的,那么我该如何阅读它。我尝试使用 CreateFile 打开它,但出现错误 5(拒绝访问)。那么如何使用 CreateFile 访问它呢?
    • 嗨,现在我通过在 CreateFile 中使用 FILE_FLAG_BACKUP_SEMANTICS 解决了访问被拒绝错误。现在如何复制卷影副本中存在的所有文件块(扇区)或文件?
    • 您是否尝试过我的回答中提到的 ReadFile() 或 BackupRead() 函数?还是你需要别的东西?要枚举快照的内容(文件、目录...),您必须使用 FindFirstFile()/FindNextFile()(请参阅msdn.microsoft.com/en-us/library/windows/desktop/…
    • 嗨,使用 FindFirstFile()/FindNextFile() 枚举了文件,但它没有列出我驱动器中存在的所有文件。例如:$AttrDef、$Bitmap、$MFT 等。我怎样才能列出所有这些文件?还有你对 FSCTL_GET_RETRIEVAL_POINTERS 有什么了解吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多