temp에서 파일을 만든 다음 응용 프로그램 디렉토리로 이동하는 데 문제가 있습니다. 새로운 부모 폴더에서 moved file does not inherit permissions을 발견했습니다.SetNamedSecurityInfo를 사용하여 파일이 상속 가능한 사용 권한을 새로 고쳐야합니다.
필자는 File.Copy를 사용할 수 있음을 알고 있습니다. 새 파일을 만드는 것은 사용 권한을 상속 받지만 성능상의 이유 때문에이 작업을 원하지 않습니다.
위 사이트는 PInvoke approach을 사용하여 액세스 할 수있는 SetNamedSecurityInfo를 사용하여 제안합니다. 그러나 새로운 FileInfo ("C : \ Test.txt")와 같은 핵심 .NET API를 사용하여이를 달성 할 수있는 방법이있을 것이라고 생각했습니다. 위 기사와 같이 GetAccessControl()은 4 년 전입니다.
부모 폴더의 파일 권한과 일치하도록 파일 권한을 '새로 고'하는 더 좋은 방법이 있습니까?
FileInfo fi = new FileInfo(myTargetFile);
var acl = fi.GetAccessControl();
var rules = acl.GetAccessRules(true, true, typeof(SecurityIdentifier));
//Remove all existing permissions on the file
foreach (var rule in rules.Cast<FileSystemAccessRule>())
{
acl.RemoveAccessRule(rule);
}
//Allow inherited permissions on the file
acl.SetAccessRuleProtection(false, false);
fi.SetAccessControl(acl);
: 몇 가지 테스트 후