2012-07-13 17 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)); 

私が発見した問題は、「認証されたユーザーは、」Windowsのこのの異なる言語バージョンで、しかし窓の上にあるシステムアカウントであることです口座名は翻訳されています。たとえばドイツでは、この口座は「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

私に助けてくれました:-) – Jodrell

関連する問題