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
- Атрибуты
Примеры
В следующем примере кода класс используется 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, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(SafeHandle, AccessControlSections) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом NativeObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(SafeHandle, AccessControlSections, Object) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом NativeObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(String, AccessControlSections) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом NativeObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(String, AccessControlSections, Object) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом 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) |
Создает каталог и возвращает его, гарантируя, что он создается с указанными свойствами безопасности. Если каталог уже существует, возвращается существующий каталог. |