18

認証されたすべてのユーザーがアプリケーション関連の設定を保存するためのフォルダーへのアクセス権を追加する必要があるという問題があります。私はこれが以下のコードで行うことができることを発見しました...

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

私が見つけた問題は、「Authenticated Users」がWindows上のシステムアカウントであるということですが、Windowsの異なる言語バージョンでは、このアカウント名は翻訳されます。たとえば、ドイツでは、このアカウントは「AuthentifizierteBenutzer」と呼ばれます。このアカウントの固有名を知る方法はありますか(すべての言語を調べて正しいアカウント名を見つけることは明らかではありません)。

4

1 に答える 1

32

既知のSIDリストを使用することをお勧めします(http://support.microsoft.com/kb/243330を参照)。Authenticated Userは常に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));
于 2012-07-13T22:10:59.250 に答える