BackupWrite:在重新分析点上拒绝访问
BackupWrite: access denied on reparse points
我正在使用 BackupRead 和 BackupWrite 实现 2 个文件夹之间的文件同步。
我可以毫无问题地在文件和文件夹上使用它们。但是当我想在重新分析点上使用它们时,BackupWrite 失败并出现 access denied 错误。
使用 BackupRead 检索原始重分析点时没有错误。缓冲区有 2 个流:一个用于安全数据,一个用于重新解析数据。我可以在后者中看到重新分析点的目标。
我要创建的文件不存在 FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT 传递给 CreateFile。
所以,我的问题是:如何打开一个文件,让BackupWrite成功还原一个重解析点?
我终于找到了 2 个问题:
如果重解析点用于目录,则必须首先将新的重解析点创建为目录。
我们需要为当前进程启用"SeRestorePrivilege"或"SeCreateSymbolicLinkPrivilege"(通过OpenProcessToken、LookupPrivilegeValue和AdjustTokenPrivileges),即使已经授予了管理权限。
我正在使用 BackupRead 和 BackupWrite 实现 2 个文件夹之间的文件同步。
我可以毫无问题地在文件和文件夹上使用它们。但是当我想在重新分析点上使用它们时,BackupWrite 失败并出现 access denied 错误。
使用 BackupRead 检索原始重分析点时没有错误。缓冲区有 2 个流:一个用于安全数据,一个用于重新解析数据。我可以在后者中看到重新分析点的目标。 我要创建的文件不存在 FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT 传递给 CreateFile。
所以,我的问题是:如何打开一个文件,让BackupWrite成功还原一个重解析点?
我终于找到了 2 个问题:
如果重解析点用于目录,则必须首先将新的重解析点创建为目录。
我们需要为当前进程启用"SeRestorePrivilege"或"SeCreateSymbolicLinkPrivilege"(通过OpenProcessToken、LookupPrivilegeValue和AdjustTokenPrivileges),即使已经授予了管理权限。