0

私のアプリはローカルネットワークで動作しており、管理者はこのコードを使用して共有フォルダーにすべてのユーザーのフォルダーを作成します。たとえば、「me1」はローカルネットワークのユーザーです。

DirectoryInfo d=new DirectoryInfo(@"\\server\Test");
DirectoryInfo di = new DirectoryInfo(@"\\server\Test\me1");
di.Create(d.GetAccessControl());
DirectorySecurity dSecurity = di.GetAccessControl();

dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
                                                 FileSystemRights.FullControl,
                                                 AccessControlType.Deny));
di.SetAccessControl(dSecurity);

これで、すべてのユーザーが自分のフォルダーにアクセスできなくなりました。次のコードを使用します。

DirectoryInfo dInfo = new DirectoryInfo(@"\\Server\Test\me1");
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
                                                 FileSystemRights.FullControl,
                                                 AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);

しかし、「アクセスが拒否されました」というエラーが発生しました。特定のユーザーに権限を設定するにはどうすればよいですか?つまり、管理者は特定のユーザーがディレクトリを作成するときに権限を与えることができますか?ありがとう。

4

1 に答える 1

1

アクセス制御ルールの拒否(ACE)が最初にチェックされ、全員がEveryoneグループに含まれます。したがって、最初のACEは、権限を変更しようとしているユーザーを含め、すべてのユーザーへのすべてのアクセスをブロックします。

一般に、拒否ルールは間違ったアプローチです。IDがアクセスを拒否されるIDに一致する許可ルールがない場合は、許可するアクセスを許可するアクセスルールだけを追加することをお勧めします。明示的にブロックする必要はありません。

于 2011-05-21T08:40:56.070 に答える