2012-07-13 15 views
15

Uygulamayla ilgili ayarları depolamak için tüm kimliği doğrulanmış kullanıcılar için bir klasöre erişim izni vermem gereken bir sorunum var. Ben ... Bu aşağıdaki kodu ile yapılabilir buldukProgramsal Olarak Bir Klasöre İzinler Ekleme

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)); 

buldum sorunu "Doğrulanmış Kullanıcılar" Windows'un bu farklı dillerdeki sürümlerinde Ancak pencerelerde olan bir sistem hesabının olmasıdır hesap adı tercüme edilmiştir, örneğin Almanya'da bu hesaba 'Authentifizierte Benutzer' denir. Bu hesabın doğru ismini bilmenin bir yolu var mı (her dilden geçtiği ve doğru hesap adını bulduktan sonra).

cevap

26

İyi Bilinen SID listesini kullanmanızı öneririm (bkz. http://support.microsoft.com/kb/243330). Kimliği Doğrulanmış Kullanıcı her zaman SID: S-1-5-11'dir. Bunu kullanırsanız, bu dilden bağımsız bir dil olmalıdır (ama ben test etmedim).

yerine bir SecurityIdentifier ve kullanımını oluşturun:

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

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

Çok teşekkür ederim !!! Test edeceğim (burada her şeyim var) ve çalışıp çalışmadığını onaylayın. –

+1

Bir çekicilik gibi çalışır! Bütün ciddiyetle, belgelere daha yakından bakarak kendimi yakalamam gerekirdi. Çok takdir edildi. –

+0

bana +1 :-) yardımcı oldu – Jodrell

İlgili konular