2

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

  1. 复制文件(源,目标)
  2. GetNamedSecurityInfo(来源,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
  3. 使用 ConvertSecurityDescriptorToStringSecurityDescriptor 打印源 SD
  4. SetNamedSecurityInfo(目标,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
  5. GetNamedSecurityInfo(目标,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
  6. 使用 ConvertSecurityDescriptorToStringSecurityDescriptor 打印目标 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。这是为什么?我在这里做错了什么?

4

2 回答 2

2

SHFileOperation可以将文件及其安全属性一起复制,但是从您的另一个问题中,我看到您担心这在服务中不起作用。也许以下新闻组讨论将为您提供一些有用的信息:

于 2008-10-15T21:57:50.707 回答
1

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

于 2008-10-15T22:59:22.283 回答