(0) exportieren Drucken
Alle erweitern

DirectorySecurity-Klasse

Aktualisiert: November 2007

Stellt die Zugriffssteuerung und die Überwachungssicherheit für ein Verzeichnis dar. Diese Klasse kann nicht geerbt werden.

Namespace:  System.Security.AccessControl
Assembly:  mscorlib (in mscorlib.dll)

public sealed class DirectorySecurity : FileSystemSecurity
public final class DirectorySecurity extends FileSystemSecurity
public final class DirectorySecurity extends FileSystemSecurity

Die DirectorySecurity-Klasse gibt die Zugriffsrechte für ein Systemverzeichnis an und gibt an, wie Zugriffsversuche überwacht werden. Die Klasse stellt Zugriffs- und Überwachungsrechte als Regeln dar. Jede Zugriffsregel wird durch ein FileSystemAccessRule-Objekt dargestellt, und jede Überwachungsregel wird durch ein FileSystemAuditRule-Objekt dargestellt.

Die DirectorySecurity-Klasse ist eine Abstraktion des zugrunde liegenden Dateisicherheitssystems von Microsoft Windows. In diesem System verfügt jedes Verzeichnis über eine freigegebene Zugriffssteuerungsliste (Discretionary Access Control List, DACL), mit der der Zugriff auf das Verzeichnis gesteuert wird, sowie über eine Systemzugriffssteuerungsliste (System Access Control List, SACL), mit der die überwachten Zugriffssteuerungsversuche angegeben werden. Die FileSystemAccessRule-Klasse und die FileSystemAuditRule-Klasse stellen Abstraktionen von Zugriffssteuerungseinträgen (Access Control Attempts, ACEs) dar, zu denen DACLs und SACLs gehören.

Die DirectorySecurity-Klasse blendet viele Details von DACLs und SACLs aus. Es sind keine Überlegungen zur ACE-Reihenfolge oder zu NULL-DACLS erforderlich.

Verwenden Sie die FileSecurity-Klasse, um die Zugriffsregeln abzurufen, hinzuzufügen bzw. zu ändern, die die DACL und SACL einer Datei darstellen.

Mithilfe der SetAccessControl-Methode oder der SetAccessControl-Methode können neue oder geänderte Zugriffs- bzw. Überwachungsregeln für ein Verzeichnis beibehalten werden. Mithilfe der GetAccessControl-Methode oder GetAccessControl-Methode können Zugriffs- bzw. Überwachungsregeln aus einem vorhandenen Verzeichnis abgerufen werden.

Im folgenden Codebeispiel wird die DirectorySecurity-Klasse verwendet, um einer Datei einen ACL-Eintrag hinzuzufügen und diesen dann wieder aus der Datei zu entfernen. Sie müssen ein gültiges Benutzer- oder Gruppenkonto angeben, um dieses Beispiel auszuführen.

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 FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // 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 FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // 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);

        }
    }
}



Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft