2

サーバーからローカルコンピューターにサブディレクトリとファイルを含むディレクトリをコピーする私のプログラム。各ローカルユーザーがそれを変更できる必要があります(編集/削除/削除/名前変更)。しかし、今では所有者のみを行うことができます。コピーしたディレクトリとその子アイテムに必要な権限を設定するにはどうすればよいですか? 私はそのようなコードを試します:

String account = Path.Combine(Environment.MachineName, "Users");
FileSystemRights rights = FileSystemRights.FullControl;
AccessControlType controlType = AccessControlType.Allow;
DirectorySecurity security = local_commonDir.GetAccessControl(AccessControlSections.Access);
FileSystemAccessRule rule = new FileSystemAccessRule(account, rights, controlType);
security.AddAccessRule(rule);
local_commonDir.SetAccessControl(security);

しかし、私は例外を得ました:

一部の または プロパティへのリンクは変換できません。

存在しないアクセス コントロールを追加すると、エラーは発生しません。「ユーザー」が既に存在するため、エラーを受け取っていると思います。既存の権利を変更するにはどうすればよいですか?

4

1 に答える 1

4

私は解決策を見つけました:

WindowsIdentity id = WindowsIdentity.GetCurrent();
var sid = new SecurityIdentifier(WellKnownSidType.AccountDomainUsersSid, id.User.AccountDomainSid);
var security = dir.GetAccessControl();
var rule = new FileSystemAccessRule(sid,
    FileSystemRights.FullControl,
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
    PropagationFlags.None,
    AccessControlType.Allow);
security.AddAccessRule(rule);
dir.SetAccessControl(security);
于 2012-12-06T10:22:54.967 に答える