我正在使用BackupRead和BackupWrite来实现2个文件夹之间的文件同步。
我可以在文件和文件夹上使用它们,没有任何问题。但是,当我想在重新分析点上使用它们时,BackupWrite 会失败,并出现访问被拒绝错误。
使用 BackupRead 检索原始重分析点时不会出现错误。缓冲区有 2 个流:一个用于安全数据,一个用于重新分析数据。我可以在后者中看到重分析点的目标。 我尝试创建的文件不存在并且 FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT 被传递给 CreateFile。
所以,我的问题是:如何打开文件以便 BackupWrite 成功恢复重解析点?
最佳答案
我终于发现了两个问题:
如果重解析点是目录,则必须首先将新的重解析点创建为目录。
即使已授予管理权限,我们也需要为当前进程启用“SeRestorePrivilege”或“SeCreateSymbolicLinkPrivilege”(通过 OpenProcessToken、LookupPrivilegeValue 和 AdjustTokenPrivileges)。
关于备份写入: access denied on reparse points,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30414100/