2008-10-15 103 views
2

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

  1. 的CopyFile(源,目标)
  2. GetNamedSecurityInfo(源,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)使用ConvertSecurityDescriptorToStringSecurityDescriptor
  3. SetNamedSecurityInfo(目标,GROUP_SECURITY_INFORMATION
  4. 打印源SD | DACL_SECURITY_INFORMATION)
  5. GetNamedSecurityInfo(目标,GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
  6. 打印针对SD使用ConvertSecurityDescriptorToStringSecurityDescriptor

在#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

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

+0

感谢这些链接。是的,我不能使用SHFileOperation,但不是因为你的想法。当它只是从父文件夹继承它们时,它实际上不会复制文件的安全属性。至少,这是我的测试显示的。 – Charles 2008-10-15 22:13:36