적어도 파일 시스템 수정 권한이 있어야 BUILTIN \ Users 그룹의 사용 권한을 수정하려고합니다. 불행히도, 아래 코드를 사용하려고 시도해도 변경되지 않은 ACL이 생성됩니다.CommonAppDataPath 디렉터리의 C#에서 ACL Perms를 수정할 수 없습니다.
SecurityIdentifier usersSecurityIdentifier = ntAccount.Translate(typeof(SecurityIdentifier)) as SecurityIdentifier;
DirectorySecurity directorySecurity = Directory.GetAccessControl(source.FullName);
FileSystemAccessRule accessRule
= new FileSystemAccessRule(@"BUILTIN\Users", FileSystemRights.FullControl, AccessControlType.Allow);
directorySecurity.ModifyAccessRule(AccessControlModification.Add,
accessRule,
out modified);
Console.WriteLine(modified);
수정 된 보고서는 모든 경우에 해당되지만 폴더 속성에서 볼 때 변경되지 않습니다.
비슷한 코드를 사용하는 디렉터리에 대한 ACL이 아직없는 SecurityIdentifier에 대한 액세스 규칙을 추가하려고했지만 수정 대신 AddAccessRule 만 추가했습니다. 새 SecurityIdentifier가 디렉토리의 perms 목록에 나타 났지만 지정한 액세스 권한이 없습니다.
관리자 계정이 소유자 인 Environment.SpecialFolders.CommonApplicationData의 독점 디렉터리에 대한 액세스 권한을 수정하려고합니다. 나는 또한 ACL을 관리자로 변경하기를 원합니다.
위의 코드가 잘못되었거나 네이티브 .NET 클래스를 사용하여 ACL을 설정하는 올바른 방법으로 나를 인도 할 수있는 리소스가있는 사람이 있습니까?
다른 비스타 컴퓨터에서이 동작을 확인했습니다. CommonAppData 경로에서 데이터를 수정한다는 사실과 관련이있는 것으로 보입니다. –
그래서이 관련 스레드를 발견하고 [여기] [1] 게시 할 것이라고 생각했습니다. 디렉터리를 만들 때 관리 계정에서 수행하는 설치 중에 디렉터리 사용 권한을 설정해야한다는 것이 핵심입니다. 나는 이것이 사용자 정의 액션과 Installer 클래스로 할 수 있다고 가정한다. 코드를 작성하고 실제로 이것이 사실임을 확인하면 여기서 내 솔루션을 게시 할 것입니다. [1] : http://www.vistax64.com/vista-security/165672-how-programmatically-modify-users-full-control.html –