2012-07-13 5 views
15

인증 된 모든 사용자가 응용 프로그램 관련 설정을 저장하기 위해 폴더에 대한 액세스 권한을 부여해야하는 문제가 있습니다. 나는 ... 이것은 아래의 코드와 함께 할 수 있다는 것을 발견했다프로그래밍 방식으로 폴더에 사용 권한 추가

var Info = new DirectoryInfo(settingsdir); 
var Security = Info.GetAccessControl(AccessControlSections.Access); 

Security.AddAccessRule(
    new FileSystemAccessRule(
     "Authenticated Users", FileSystemRights.Modify, 
     InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
     PropagationFlags.None, 
     AccessControlType.Allow)); 

내가 찾은 문제는 "인증 된 사용자는"윈도우이 서로 다른 언어 버전에서, 그러나 창에 시스템 계정이라는 것이다 예를 들어 독일에서는이 계정을 'Authentifizierte Benutzer'라고합니다. 이 계정의 적절한 이름을 알 수있는 방법이 있습니까 (모든 언어를 거쳐 정확한 계정 이름을 찾는 것이 명백합니다).

답변

26

잘 알려진 SID 목록 (http://support.microsoft.com/kb/243330 참조)을 사용하는 것이 좋습니다. 인증 된 사용자는 항상 SID : S-1-5-11입니다. 그것을 사용한다면, 그것은 언어에 무관심해야합니다 (그러나 나는 테스트하지 않았습니다).

그 대신 SecurityIdentifier 및 사용을 만듭니다

var sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null); 

Security.AddAccessRule(
    new FileSystemAccessRule(
     sid, 
     FileSystemRights.Modify, 
     InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
     PropagationFlags.None, 
     AccessControlType.Allow)); 
+0

너무 감사합니다! 나는 시험 할 것이다 (나는 모든 것을 여기에 세웠다). –

+1

매력처럼 작동합니다! 모든 진지하게 나는 더 가까운 문서를 보면서 그것을 스스로 잡아야했다. 매우 감사. –

+0

+1 :-) – Jodrell

관련 문제