移动文件夹跨磁盘没有安全描述符更改

我想将文件夹从一个驱动器(例如C)移动到另一个(比如说D),而不更改其安全描述符。 SHFileOperation可以移动文件夹,但D上的新文件夹总是inheritance父文件夹的权限。 不要影响在同一父文件夹下的其他子文件夹,我不能更改父文件夹停止传播其子对象的权限。

我已经使用SetSecurityDescriptorControl与SE_DACL_PROTECTED在C上创build文件夹时禁用inheritance。当移动文件夹交叉卷时似乎不工作。 我也尝试通过删除旧的ACE来为D上的新文件夹设置安全信息。 但是,那些inheritance的ACE不能被删除。

有一个registryForceCopyAclwithFile(http://thedailyreviewer.com/server/view/copy-folder-w-user-permission-intact-10274759),但我不想使用它,因为它的全球系统的影响。

如何在不修改权限的情况下使用Windows API移动文件夹跨磁盘? 我在这里错过了什么?

感谢Leon

您可以使用BackupRead和BackupWrite在NTFS安全性不变的情况下跨卷移动目录。

BackupRead: http : //msdn.microsoft.com/en-us/library/aa362509( VS.85) .aspx

BackupWrite: http : //msdn.microsoft.com/en-us/library/aa362511( VS.85) .aspx

您将需要首先在目标位置创建文件夹,然后使用CreateFile打开这两个文件夹以便获取它们的句柄。

您的过程将需要获得备份和恢复权限,您需要将FILE_FLAG_BACKUP_SEMANTICS传递到CreateFile。