Страницы

Поиск по вопросам

вторник, 18 февраля 2020 г.

Отключение наследования на папке

#c_sharp


Создаю автоматический файловую структуру. И на папке Private, нужно отключить наследование.
Но у меня не получается.

Вот мой код.

if (!Directory.Exists(path))
                        {
                            Directory.CreateDirectory(path);
                            SetFolderPermission(path, userName, FileSystemRights.ReadAndExecute);
                            SetFolderPermission(path, userName, FileSystemRights.Write);
                            RemoveFileSecurity(path, domainUsers, FileSystemRights.Write);
                            RemoveFileSecurity(path, domainUsers, FileSystemRights.Read);
                        }


И два метода

 public static void SetFolderPermission(string folderPath, string userName, FileSystemRights
rights)
        {
            var directoryInfo = new DirectoryInfo(folderPath);
            var directorySecurity = directoryInfo.GetAccessControl();

            var fileSystemRule = new FileSystemAccessRule(userName,
                                                          rights,
                                                          InheritanceFlags.ObjectInherit |
                                                          InheritanceFlags.ContainerInherit,
                                                          PropagationFlags.None,
                                                          AccessControlType.Allow);

            directorySecurity.AddAccessRule(fileSystemRule);
            directoryInfo.SetAccessControl(directorySecurity);
        }

        public static void RemoveFileSecurity(string folderPath, string userName,
FileSystemRights rights)
        {
            var directoryInfo = new DirectoryInfo(folderPath);
            var directorySecurity = directoryInfo.GetAccessControl();

            var fileSystemRule = new FileSystemAccessRule(userName,
                                                          rights,
                                                          InheritanceFlags.ContainerInherit |
                                                          InheritanceFlags.ContainerInherit ,
                                                          PropagationFlags.InheritOnly,
                                                          AccessControlType.Allow);

            directorySecurity.RemoveAccessRule(fileSystemRule);
            directoryInfo.SetAccessControl(directorySecurity);
        }


В первом методе я даю пользователю права на папку, а во втором пытаюсь отключить
наследование для пользователей домена. И это скорее всего не правильно. Мне нужно поправить
этот метод, чтобы он просто отключал бы наследование. Как мне это сделать? 
    


Ответы

Ответ 1



directorySecurity.SetAccessRuleProtection(true, false); О методе SetAccessRuleProtection

Комментариев нет:

Отправить комментарий