2010-02-18 2 views
1

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); 
: 몇 가지 테스트 후

답변

1

이 내가 함께 갈거야 코드입니다
관련 문제