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 namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified directory for the
// specified account.
void AddDirectorySecurity(String^ directoryName, String^ account, 
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

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

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->AddAccessRule( gcnew FileSystemAccessRule(account,
        rights, controlType));

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

// Removes an ACL entry on the specified directory for the
// specified account.
void RemoveDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

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

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        rights, controlType));

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

int main()
{
    String^ directoryName = "TestDirectory";
    String^ accountName = "MYDOMAIN\\MyAccount";
    if (!Directory::Exists(directoryName))
    {
        Console::WriteLine("The directory {0} could not be found.", 
            directoryName);
        return 0;
    }
    try
    {
        Console::WriteLine("Adding access control entry for {0}",
            directoryName);

        // Add the access control entry to the directory.
        AddDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from {0}",
            directoryName);

        // Remove the access control entry from the directory.
        RemoveDirectorySecurity(directoryName, accountName, 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("You are not authorised to carry" +
            " out this procedure.");
    }
    catch (System::Security::Principal::
        IdentityNotMappedException^)
    {
        Console::WriteLine("The account {0} could not be found.", accountName);
    }
}
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 являются абстракциями записей управления доступом (ACE), которые составляют списки DACL и SACCl.

Класс DirectorySecurity скрывает многие сведения о списках DACL и SACCL. Вам не нужно беспокоиться о упорядочении 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)

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

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

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

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

Добавляет указанное правило аудита в системный список управления доступом, связанный с данным объектом 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CreateDirectory(DirectorySecurity, String)

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

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