DirectorySecurity Класс

Определение

Представляет безопасность управления доступом и аудита для каталога. Этот класс не наследуется.

public ref class DirectorySecurity sealed : System::Security::AccessControl::FileSystemSecurity
public sealed class DirectorySecurity : System.Security.AccessControl.FileSystemSecurity
[System.Security.SecurityCritical]
public sealed class DirectorySecurity : System.Security.AccessControl.FileSystemSecurity
type DirectorySecurity = class
    inherit FileSystemSecurity
[<System.Security.SecurityCritical>]
type DirectorySecurity = class
    inherit FileSystemSecurity
Public NotInheritable Class DirectorySecurity
Inherits FileSystemSecurity
Наследование
Атрибуты

Примеры

В следующем примере кода класс используется DirectorySecurity для добавления и удаления записи списка управления доступом (ACL) из каталога. Чтобы запустить этот пример, необходимо указать допустимую учетную запись пользователя или группы.

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class DirectoryExample
    {
        public static void Main()
        {
            try
            {
                string DirectoryName = "TestDirectory";

                Console.WriteLine("Adding access control entry for " + DirectoryName);

                // Add the access control entry to the directory.
                AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + DirectoryName);

                // Remove the access control entry from the directory.
                RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Adds an ACL entry on the specified directory for the specified account.
        public static void AddDirectorySecurity(
            string DirectoryName,
            string Account,
            FileSystemRights Rights,
            AccessControlType ControlType
            )
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new(DirectoryName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);
        }

        // Removes an ACL entry on the specified directory for the specified account.
        public static void RemoveDirectorySecurity(
            string DirectoryName,
            string Account,
            FileSystemRights Rights,
            AccessControlType ControlType
            )
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new(DirectoryName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);
        }
    }
}
Imports System.IO
Imports System.Security.AccessControl



Module DirectoryExample

    Sub Main()
        Try
            Dim DirectoryName As String = "TestDirectory"

            Console.WriteLine("Adding access control entry for " + DirectoryName)

            ' Add the access control entry to the directory.
            AddDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " + DirectoryName)

            ' Remove the access control entry from the directory.
            RemoveDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub


    ' Adds an ACL entry on the specified directory for the specified account.
    Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfoobject.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the 
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub


    ' Removes an ACL entry on the specified directory for the specified account.
    Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfo object.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the 
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub
End Module

Комментарии

Класс DirectorySecurity указывает права доступа для системного каталога и способ аудита попыток доступа. Этот класс представляет права доступа и аудита в виде набора правил. Каждое правило доступа представлено FileSystemAccessRule объектом, а каждое правило аудита представлено FileSystemAuditRule объектом.

Класс DirectorySecurity является абстракцией базовой системы безопасности файлов Windows. В этой системе каждый каталог имеет список управления доступом (DACL), который управляет доступом к каталогу и списком управления доступом системы (SACL), который указывает попытки контроля доступа, которые проверяются. FileSystemAccessRule Классы FileSystemAuditRule являются абстракциями записей управления доступом (ACEs), составляющих списки DACLs и списки SACCl.

Класс DirectorySecurity скрывает множество сведений о списках DACLs и SACLs. Вам не нужно беспокоиться о упорядочении ACE или null DACLS.

FileSecurity Используйте класс для получения, добавления или изменения правил доступа, представляющих DACL и SACL файла.

В следующих таблицах перечислены методы, которые можно использовать для доступа к безопасности каталогов и поддержания их.

задачи Методы
Добавление правил FileSystemSecurity.AddAccessRule

FileSystemSecurity.AddAuditRule
Удаление правил FileSystemSecurity.RemoveAccessRule

FileSystemSecurity.RemoveAuditRule
Получение управления доступом к каталогу FileSystemAclExtensions.GetAccessControl(DirectoryInfo)

DirectoryInfo.GetAccessControl
Сохранение управления доступом в каталог FileSystemAclExtensions.SetAccessControl(DirectoryInfo, DirectorySecurity)

DirectoryInfo.SetAccessControl

Конструкторы

Имя Описание
DirectorySecurity()

Инициализирует новый экземпляр класса DirectorySecurity.

DirectorySecurity(String, AccessControlSections)

Инициализирует новый экземпляр DirectorySecurity класса из указанного каталога с помощью указанных значений AccessControlSections перечисления.

Свойства

Имя Описание
AccessRightType

Возвращает перечисление, которое FileSystemSecurity класс использует для представления прав доступа.

(Унаследовано от FileSystemSecurity)
AccessRulesModified

Возвращает или задает логическое значение, указывающее, были ли изменены правила доступа, связанные с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
AccessRuleType

Возвращает перечисление, которое FileSystemSecurity класс использует для представления правил доступа.

(Унаследовано от FileSystemSecurity)
AreAccessRulesCanonical

Возвращает логическое значение, указывающее, находятся ли правила доступа, связанные с этим ObjectSecurity объектом, в каноническом порядке.

(Унаследовано от ObjectSecurity)
AreAccessRulesProtected

Возвращает логическое значение, указывающее, защищен ли список управления доступом (DACL), связанный с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
AreAuditRulesCanonical

Возвращает логическое значение, указывающее, находятся ли правила аудита, связанные с этим ObjectSecurity объектом, в каноническом порядке.

(Унаследовано от ObjectSecurity)
AreAuditRulesProtected

Возвращает логическое значение, указывающее, защищен ли список управления доступом системы (SACL), связанный с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
AuditRulesModified

Возвращает или задает логическое значение, указывающее, были ли изменены правила аудита, связанные с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
AuditRuleType

Возвращает тип, который FileSystemSecurity класс использует для представления правил аудита.

(Унаследовано от FileSystemSecurity)
GroupModified

Возвращает или задает логическое значение, указывающее, была ли изменена группа, связанная с защищаемым объектом.

(Унаследовано от ObjectSecurity)
IsContainer

Возвращает логическое значение, указывающее, является ли этот ObjectSecurity объект объектом контейнера.

(Унаследовано от ObjectSecurity)
IsDS

Возвращает логическое значение, указывающее, является ли этот ObjectSecurity объект объектом каталога.

(Унаследовано от ObjectSecurity)
OwnerModified

Возвращает или задает логическое значение, указывающее, был ли изменен владелец защищаемого объекта.

(Унаследовано от ObjectSecurity)
SecurityDescriptor

Возвращает дескриптор безопасности для этого экземпляра.

(Унаследовано от ObjectSecurity)

Методы

Имя Описание
AccessRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AccessControlType)

Инициализирует новый экземпляр класса, представляющий новое правило управления доступом для указанного FileSystemAccessRule пользователя с указанными правами доступа, контролем доступа и флагами.

(Унаследовано от FileSystemSecurity)
AddAccessRule(AccessRule)

Добавляет указанное правило доступа в список управления доступом (DACL), связанный с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
AddAccessRule(FileSystemAccessRule)

Добавляет указанное разрешение списка управления доступом (ACL) в текущий файл или каталог.

(Унаследовано от FileSystemSecurity)
AddAuditRule(AuditRule)

Добавляет указанное правило аудита в список управления доступом системы (SACL), связанный с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
AddAuditRule(FileSystemAuditRule)

Добавляет указанное правило аудита в текущий файл или каталог.

(Унаследовано от FileSystemSecurity)
AuditRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AuditFlags)

Инициализирует новый экземпляр FileSystemAuditRule класса, представляющий указанное правило аудита для указанного пользователя.

(Унаследовано от FileSystemSecurity)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAccessRules(Boolean, Boolean, Type)

Возвращает коллекцию правил доступа, связанных с указанным идентификатором безопасности.

(Унаследовано от CommonObjectSecurity)
GetAuditRules(Boolean, Boolean, Type)

Возвращает коллекцию правил аудита, связанных с указанным идентификатором безопасности.

(Унаследовано от CommonObjectSecurity)
GetGroup(Type)

Возвращает основную группу, связанную с указанным владельцем.

(Унаследовано от ObjectSecurity)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetOwner(Type)

Возвращает владельца, связанного с указанной основной группой.

(Унаследовано от ObjectSecurity)
GetSecurityDescriptorBinaryForm()

Возвращает массив байтовых значений, представляющий сведения о дескрипторе безопасности для этого ObjectSecurity объекта.

(Унаследовано от ObjectSecurity)
GetSecurityDescriptorSddlForm(AccessControlSections)

Возвращает представление языка определения дескриптора безопасности (SDDL) указанных разделов дескриптора безопасности, связанного с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ModifyAccess(AccessControlModification, AccessRule, Boolean)

Применяет указанное изменение к списку управления доступом(DACL), связанному с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
ModifyAccessRule(AccessControlModification, AccessRule, Boolean)

Применяет указанное изменение к списку управления доступом(DACL), связанному с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
ModifyAudit(AccessControlModification, AuditRule, Boolean)

Применяет указанное изменение к списку управления доступом системы (SACL), связанному с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
ModifyAuditRule(AccessControlModification, AuditRule, Boolean)

Применяет указанное изменение к списку управления доступом системы (SACL), связанному с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
Persist(Boolean, String, AccessControlSections)

Сохраняет указанные разделы дескриптора безопасности, связанного с этим ObjectSecurity объектом, в постоянное хранилище. Рекомендуется, чтобы значения параметров, includeSections переданных конструктору, и методы сохранялись идентичны.

(Унаследовано от ObjectSecurity)
Persist(SafeHandle, AccessControlSections, Object)

Сохраняет указанные разделы дескриптора безопасности, связанного с этим NativeObjectSecurity объектом, в постоянное хранилище. Рекомендуется, чтобы значения параметров, includeSections переданных конструктору, и методы сохранялись идентичны.

(Унаследовано от NativeObjectSecurity)
Persist(SafeHandle, AccessControlSections)

Сохраняет указанные разделы дескриптора безопасности, связанного с этим NativeObjectSecurity объектом, в постоянное хранилище. Рекомендуется.сохранить значения параметров, переданных includeSections конструктору, и методы сохранения идентичны.

(Унаследовано от NativeObjectSecurity)
Persist(String, AccessControlSections, Object)

Сохраняет указанные разделы дескриптора безопасности, связанного с этим NativeObjectSecurity объектом, в постоянное хранилище. Рекомендуется, чтобы значения параметров, includeSections переданных конструктору, и методы сохранялись идентичны.

(Унаследовано от NativeObjectSecurity)
Persist(String, AccessControlSections)

Сохраняет указанные разделы дескриптора безопасности, связанного с этим NativeObjectSecurity объектом, в постоянное хранилище. Рекомендуется, чтобы значения параметров, includeSections переданных конструктору, и методы сохранялись идентичны.

(Унаследовано от NativeObjectSecurity)
PurgeAccessRules(IdentityReference)

Удаляет все правила доступа, связанные с указанным IdentityReference.

(Унаследовано от ObjectSecurity)
PurgeAuditRules(IdentityReference)

Удаляет все правила аудита, связанные с указанным IdentityReference.

(Унаследовано от ObjectSecurity)
ReadLock()

Блокирует этот ObjectSecurity объект для доступа на чтение.

(Унаследовано от ObjectSecurity)
ReadUnlock()

Разблокирует этот ObjectSecurity объект для доступа на чтение.

(Унаследовано от ObjectSecurity)
RemoveAccessRule(AccessRule)

Удаляет правила доступа, содержащие тот же идентификатор безопасности и маску доступа, что и указанное правило доступа из списка управления доступом (DACL), связанного с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
RemoveAccessRule(FileSystemAccessRule)

Удаляет все соответствующие разрешения списка управления доступом (ACL) из текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
RemoveAccessRuleAll(AccessRule)

Удаляет все правила доступа, имеющие тот же идентификатор безопасности, что и указанное правило доступа из списка управления доступом (DACL), связанного с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
RemoveAccessRuleAll(FileSystemAccessRule)

Удаляет все разрешения списка управления доступом (ACL) для указанного пользователя из текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
RemoveAccessRuleSpecific(AccessRule)

Удаляет все правила доступа, которые точно соответствуют указанному правилу доступа из списка управления доступом (DACL), связанного с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
RemoveAccessRuleSpecific(FileSystemAccessRule)

Удаляет одно соответствующее разрешение на доступ к списку управления доступом (ACL) из текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
RemoveAuditRule(AuditRule)

Удаляет правила аудита, содержащие тот же идентификатор безопасности и маску доступа, что и указанное правило аудита из списка управления доступом системы (SACL), связанного с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
RemoveAuditRule(FileSystemAuditRule)

Удаляет все соответствующие правила разрешения или запретить аудит из текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
RemoveAuditRuleAll(AuditRule)

Удаляет все правила аудита, имеющие тот же идентификатор безопасности, что и указанное правило аудита из списка управления доступом системы (SACL), связанного с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
RemoveAuditRuleAll(FileSystemAuditRule)

Удаляет все правила аудита для указанного пользователя из текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
RemoveAuditRuleSpecific(AuditRule)

Удаляет все правила аудита, которые точно соответствуют указанному правилу аудита из списка управления доступом системы (SACL), связанного с этим CommonObjectSecurity объектом.

(Унаследовано от CommonObjectSecurity)
RemoveAuditRuleSpecific(FileSystemAuditRule)

Удаляет одно соответствующее правило разрешения или запретить аудит из текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
ResetAccessRule(AccessRule)

Удаляет все правила доступа в списке управления доступом(DACL), связанном с этим CommonObjectSecurity объектом, а затем добавляет указанное правило доступа.

(Унаследовано от CommonObjectSecurity)
ResetAccessRule(FileSystemAccessRule)

Добавляет указанное разрешение списка управления доступом (ACL) в текущий файл или каталог и удаляет все соответствующие разрешения ACL.

(Унаследовано от FileSystemSecurity)
SetAccessRule(AccessRule)

Удаляет все правила доступа, содержащие тот же идентификатор безопасности и квалификатор, что и указанное правило доступа в списке управления доступом (DACL), связанном с этим CommonObjectSecurity объектом, а затем добавляет указанное правило доступа.

(Унаследовано от CommonObjectSecurity)
SetAccessRule(FileSystemAccessRule)

Задает указанное разрешение списка управления доступом (ACL) для текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
SetAccessRuleProtection(Boolean, Boolean)

Задает или удаляет защиту правил доступа, связанных с этим ObjectSecurity объектом. Правила защищенного доступа нельзя изменить родительскими объектами с помощью наследования.

(Унаследовано от ObjectSecurity)
SetAuditRule(AuditRule)

Удаляет все правила аудита, содержащие тот же идентификатор безопасности и квалификатор, что и указанное правило аудита в списке управления доступом системы (SACL), связанном с этим CommonObjectSecurity объектом, а затем добавляет указанное правило аудита.

(Унаследовано от CommonObjectSecurity)
SetAuditRule(FileSystemAuditRule)

Задает указанное правило аудита для текущего файла или каталога.

(Унаследовано от FileSystemSecurity)
SetAuditRuleProtection(Boolean, Boolean)

Задает или удаляет защиту правил аудита, связанных с этим ObjectSecurity объектом. Защищенные правила аудита нельзя изменить родительскими объектами с помощью наследования.

(Унаследовано от ObjectSecurity)
SetGroup(IdentityReference)

Задает основную группу для дескриптора безопасности, связанного с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
SetOwner(IdentityReference)

Задает владельца дескриптора безопасности, связанного с этим ObjectSecurity объектом.

(Унаследовано от ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[], AccessControlSections)

Задает указанные разделы дескриптора безопасности для этого ObjectSecurity объекта из указанного массива значений байтов.

(Унаследовано от ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[])

Задает дескриптор безопасности для этого ObjectSecurity объекта из указанного массива байтовых значений.

(Унаследовано от ObjectSecurity)
SetSecurityDescriptorSddlForm(String, AccessControlSections)

Задает указанные разделы дескриптора безопасности для этого ObjectSecurity объекта из указанной строки языка определения дескриптора безопасности (SDDL).

(Унаследовано от ObjectSecurity)
SetSecurityDescriptorSddlForm(String)

Задает дескриптор безопасности для этого ObjectSecurity объекта из указанной строки языка определения дескриптора безопасности (SDDL).

(Унаследовано от ObjectSecurity)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
WriteLock()

Блокирует этот ObjectSecurity объект для доступа на запись.

(Унаследовано от ObjectSecurity)
WriteUnlock()

Разблокирует этот ObjectSecurity объект для доступа на запись.

(Унаследовано от ObjectSecurity)

Методы расширения

Имя Описание
CreateDirectory(DirectorySecurity, String)

Создает каталог и возвращает его, обеспечивая его создание с помощью указанной безопасности каталога. Если каталог уже существует, возвращается существующий каталог.

Применяется к