复制文件安全权限

时间:2008-10-15 17:35:23

标签: windows security winapi file acl

我正在将文件夹从文件夹A复制到文件夹B,然后尝试复制文件权限。以下是我正在使用的基本步骤:

  1. CopyFile(来源,目标)
  2. GetNamedSecurityInfo(来源,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
  3. 使用ConvertSecurityDescriptorToStringSecurityDescriptor
  4. 打印源SD
  5. SetNamedSecurityInfo(target,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
  6. GetNamedSecurityInfo(target,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
  7. 使用ConvertSecurityDescriptorToStringSecurityDescriptor
  8. 打印目标SD

    在#3我得到了这个SD:

    G:S-1-5-21-1454471165-1482476501-839522115-513D:AI(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;PU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;FA;;;S-1-5-21-1454471165-1482476501-839522115-1004)
    

    在#6我得到了

    G:S-1-5-21-1454471165-1482476501-839522115-513D:AI(A;ID;0x1301bf;;;PU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)
    

    对SetNamedSecurityInfo的调用返回ERROR_SUCCESS,但结果是源文件和目标文件没有相同的SD。这是为什么?我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

SHFileOperation可以将文件与其安全属性一起复制,但是从your other question我发现您担心这在服务中无效。也许以下新闻组讨论会为您提供一些有用的信息:

答案 1 :(得分:1)

服务器工具包中的Robocopy http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en
将复制所有NTFS设置和ACL,它比copy / xcopy

更强大和可靠