2011-04-02 36 views
1

我想将文件夹从一个驱动器(例如C)移动到另一个(比如说D),但其安全描述符未更改。 SHFileOperation可以移动文件夹,但D上的新文件夹总是继承父文件夹的权限。不要影响同一父文件夹下的其他子文件夹,我无法更改父文件夹以停止向其子级传播其权限。在无安全描述符更改的情况下移动文件夹跨磁盘

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

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

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

感谢 莱昂

回答

1

可以使用的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。

相关问题