ユーザーがフォルダーを移動/名前変更/削除できないようにしたいが、フォルダー内を移動してサブフォルダーとファイルを表示したい。また、コードは、これらのアクセス権を設定した後、フォルダー内にサブフォルダー/ファイルを作成できます。ファイルの場合、ユーザーが更新/移動/名前変更/削除できないようにしたいのですが、アプリでこれを行うことができます。DirectorySecurity をいじってみましたが、望ましい結果が得られません。
var directoryInfo = new DirectoryInfo(path);
var directorySecurity = directoryInfo.GetAccessControl();
var windowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent();
if (windowsIdentity != null)
{
var userName = windowsIdentity.Name;
directorySecurity.AddAccessRule(new FileSystemAccessRule(userName,
FileSystemRights.FullControl, AccessControlType.Deny));
directorySecurity.AddAccessRule(new FileSystemAccessRule(userName,
FileSystemRights.Read | FileSystemRights.ListDirectory | FileSystemRights.CreateDirectories | FileSystemRights.CreateFiles , AccessControlType.Allow));
directoryInfo.SetAccessControl(directorySecurity);
}