2008-10-15 88 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