フォルダー A からフォルダー B にファイルをコピーしてから、ファイルのアクセス許可をコピーしようとしています。私が使用している基本的な手順は次のとおりです。
- CopyFile(ソース、ターゲット)
- GetNamedSecurityInfo (ソース、GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- ConvertSecurityDescriptorToStringSecurityDescriptor を使用してソース SD を印刷する
- SetNamedSecurityInfo(ターゲット、GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- GetNamedSecurityInfo(ターゲット、GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- 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 が同じではありません。何故ですか?ここで何が間違っていますか?