Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

NamedPermissionSet-Klasse

Definiert einen Berechtigungssatz, dem ein Name und eine Beschreibung zugeordnet sind. Diese Klasse kann nicht vererbt werden.

System.Object
  System.Security.PermissionSet
    System.Security.NamedPermissionSet

Namespace:  System.Security
Assembly:  mscorlib (in mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class NamedPermissionSet : PermissionSet

Der NamedPermissionSet-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Methode NamedPermissionSet(NamedPermissionSet) Initialisiert eine neue Instanz der NamedPermissionSet-Klasse aus einem anderen benannten Berechtigungssatz.
Öffentliche Methode NamedPermissionSet(String) Initialisiert eine neue, leere Instanz der NamedPermissionSet-Klasse mit dem angegebenen Namen.
Öffentliche Methode NamedPermissionSet(String, PermissionState) Initialisiert eine neue Instanz der NamedPermissionSet-Klasse mit dem angegebenen Namen in einem uneingeschränkten oder einem vollständig eingeschränkten Zustand.
Öffentliche Methode NamedPermissionSet(String, PermissionSet) Initialisiert eine neue Instanz der NamedPermissionSet-Klasse mit dem angegebenen Namen aus einem Berechtigungssatz.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Eigenschaft Count Ruft die Anzahl der im Berechtigungssatz enthaltenen Berechtigungsobjekte ab. (Von PermissionSet geerbt.)
Öffentliche Eigenschaft Description Ruft die Textbeschreibung des aktuellen benannten Berechtigungssatzes ab oder legt diese fest.
Öffentliche Eigenschaft IsReadOnly Ruft einen Wert ab, der angibt, ob die Auflistung schreibgeschützt ist. (Von PermissionSet geerbt.)
Öffentliche Eigenschaft IsSynchronized Ruft einen Wert ab, der angibt, ob die Threadsicherheit der Auflistung gewährleistet ist. (Von PermissionSet geerbt.)
Öffentliche Eigenschaft Name Ruft den Namen des aktuellen benannten Berechtigungssatzes ab oder legt diesen fest.
Öffentliche Eigenschaft SyncRoot Ruft das Stammobjekt der aktuellen Auflistung ab. (Von PermissionSet geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode AddPermission Fügt dem PermissionSet eine angegebene Berechtigung hinzu. (Von PermissionSet geerbt.)
Geschützte Methode AddPermissionImpl Fügt dem PermissionSet eine angegebene Berechtigung hinzu. (Von PermissionSet geerbt.)
Öffentliche Methode Assert Deklariert, dass der aufrufende Code selbst dann auf die durch eine Berechtigungsanforderung geschützte Ressource über den diese Methode aufrufenden Code zugreifen kann, wenn übergeordnete Aufrufer in der Aufrufliste keine Zugriffsberechtigung für die Ressource besitzen. Die Verwendung von Assert kann zu Sicherheitsrisiken führen. (Von PermissionSet geerbt.)
Öffentliche Methode ContainsNonCodeAccessPermissions Ruft einen Wert ab, der angibt, ob das PermissionSet Berechtigungen enthält, die nicht von CodeAccessPermission abgeleitet sind. (Von PermissionSet geerbt.)
Öffentliche Methode Copy() Erstellt aus einem benannten Berechtigungssatz eine Kopie eines Berechtigungssatzes. (Überschreibt PermissionSet.Copy().)
Öffentliche Methode Copy(String) Erstellt unter einem anderen Namen eine Kopie des benannten Berechtigungssatzes mit denselben Berechtigungen.
Öffentliche Methode CopyTo Kopiert die Berechtigungsobjekte des Satzes an die angegebene Position in einem Array. (Von PermissionSet geerbt.)
Öffentliche Methode Demand Erzwingt zur Laufzeit eine SecurityException, wenn keinem der übergeordneten Aufrufer im Aufrufstapel die von der aktuellen Instanz angegebenen Berechtigungen gewährt wurden. (Von PermissionSet geerbt.)
Öffentliche Methode Deny Veraltet. Führt zum Fehlschlagen jedes Demand, das den aufrufenden Code für eine Berechtigung durchläuft, die eine Schnittmenge mit einer Berechtigung des im aktuellen PermissionSet enthaltenen Typs aufweist. (Von PermissionSet geerbt.)
Öffentliche Methode Equals Bestimmt, ob das angegebene NamedPermissionSet-Objekt und das aktuelle NamedPermissionSet-Objekt gleich sind. (Überschreibt PermissionSet.Equals(Object).)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.)
Öffentliche Methode FromXml Rekonstruiert aus einer XML-Codierung einen benannten Berechtigungssatz mit einem angegebenen Zustand. (Überschreibt PermissionSet.FromXml(SecurityElement).)
Öffentliche Methode GetEnumerator Gibt einen Enumerator für die Berechtigungen des Satzes zurück. (Von PermissionSet geerbt.)
Geschützte Methode GetEnumeratorImpl Gibt einen Enumerator für die Berechtigungen des Satzes zurück. (Von PermissionSet geerbt.)
Öffentliche Methode GetHashCode Ruft einen Hashcode für das NamedPermissionSet-Objekt ab, das für die Verwendung in Hashalgorithmen und Datenstrukturen wie Hashtabellen geeignet ist. (Überschreibt PermissionSet.GetHashCode().)
Öffentliche Methode GetPermission Ruft ein Berechtigungsobjekt des angegebenen Typs ab, sofern dieses im Berechtigungssatz vorhanden ist. (Von PermissionSet geerbt.)
Geschützte Methode GetPermissionImpl Ruft ein Berechtigungsobjekt des angegebenen Typs ab, sofern dieses im Berechtigungssatz vorhanden ist. (Von PermissionSet geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode Intersect Erstellt einen Berechtigungssatz, der die Schnittmenge des aktuellen PermissionSet und des angegebenen PermissionSet darstellt, und gibt diesen zurück. (Von PermissionSet geerbt.)
Öffentliche Methode IsEmpty Ruft einen Wert ab, der angibt, ob das PermissionSet leer ist. (Von PermissionSet geerbt.)
Öffentliche Methode IsSubsetOf Bestimmt, ob das aktuelle PermissionSet eine Teilmenge des angegebenen PermissionSet ist. (Von PermissionSet geerbt.)
Öffentliche Methode IsUnrestricted Bestimmt, ob das PermissionSetUnrestricted ist. (Von PermissionSet geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode PermitOnly Führt zum Fehlschlagen jedes Demand, der den aufrufenden Code für jedes PermissionSet durchläuft, das keine Teilmenge des aktuellen PermissionSet ist. (Von PermissionSet geerbt.)
Öffentliche Methode RemovePermission Entfernt eine Berechtigung eines bestimmten Typs aus dem Berechtigungssatz. (Von PermissionSet geerbt.)
Geschützte Methode RemovePermissionImpl Entfernt eine Berechtigung eines bestimmten Typs aus dem Berechtigungssatz. (Von PermissionSet geerbt.)
Öffentliche Methode SetPermission Legt eine Berechtigung für das PermissionSet fest und ersetzt dabei vorhandene Berechtigungen desselben Typs. (Von PermissionSet geerbt.)
Geschützte Methode SetPermissionImpl Legt eine Berechtigung für das PermissionSet fest und ersetzt dabei vorhandene Berechtigungen desselben Typs. (Von PermissionSet geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolgenentsprechung des PermissionSet zurück. (Von PermissionSet geerbt.)
Öffentliche Methode ToXml Erstellt eine XML-Elementdarstellung des benannten Berechtigungssatzes. (Überschreibt PermissionSet.ToXml().)
Öffentliche Methode Union Erstellt ein PermissionSet, bei dem es sich um die Gesamtmenge des aktuellen PermissionSet und des angegebenen PermissionSet handelt. (Von PermissionSet geerbt.)
Zum Seitenanfang
  Name Beschreibung
Explizite Schnittstellenimplementierung Private Methode IDeserializationCallback.OnDeserialization Infrastruktur. Wird ausgeführt, wenn ein vollständiges Objektdiagramm deserialisiert worden ist. (Von PermissionSet geerbt.)
Zum Seitenanfang

Mit benannten Berechtigungssätzen werden bei der Verwaltung von Sicherheitsrichtlinien die Berechtigungen angegeben, die einem Code einer bestimmten Codegruppe gewährt werden. Namen sind Zeichenfolgen aus alphanumerischen Zeichen. Beschreibungszeichenfolgen können beliebige druckbare Zeichen enthalten. Weitere Informationen finden Sie unter Benannte Berechtigungssätze.

Im folgenden Codebeispiel wird die Verwendung von Membern der NamedPermissionSet-Klasse veranschaulicht.


using System;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.IO;
using System.Collections;

class NamedPermissionSetDemo
{
    public static void PermissionSetDemo()
    {
        Console.WriteLine("Executing NamedPermissionSetDemo");
        try
        {
          // Create a new named permission set and add it to Machine policy.
            NamedPermissionSet namedPS1 = CreateCompanyPermission();
            Console.WriteLine("The name of the custom named permission set is " + namedPS1.Name + "\n");
            Console.WriteLine("The description of the custom named permission set is " + namedPS1.Description + "\n");
            DisplayPermissions(namedPS1);
            NamedPermissionSet namedPS2 = new NamedPermissionSet("MyPermssionSetCopy");
            // Perform a ToXml/FromXml round trip.
            namedPS2.FromXml(namedPS1.ToXml());
            Console.WriteLine("\nResult of the ToXml/FromXml round trip:");

            // For simplicity the results are displayed using a method call.
            DisplayPermissions(namedPS2);

            // Create and display a copy of a permission set.
            NamedPermissionSet namedPS3 = (NamedPermissionSet)namedPS2.Copy();
            Console.WriteLine("Is the copy equal to the original? " + namedPS2.Equals(namedPS3));
            NamedPermissionSet namedPS4 = new NamedPermissionSet("Second copy", namedPS3);
            Console.WriteLine("The name of the new permission set is " + namedPS4.Name + "\n");
            // Show that the new named permission set has the same permissions as the original.
            DisplayPermissions(namedPS4);
            // The hash code for two instances of the same permission might be different, hence a hash code should not be used to 
            // compare two named permission sets.
            Console.WriteLine("The hash code of the original permission set is " + namedPS2.GetHashCode());
            Console.WriteLine("The hash code of the copy is " + namedPS4.GetHashCode());

        }
        catch (Exception e)
        {
            Console.WriteLine("Exception thrown: " + e.Message.ToString());
        }
    }

    public static bool DisplayPermissions(NamedPermissionSet namedPS1)
    {
        // Display results of namedPS.GetEnumerator.
        IEnumerator psEnumerator = namedPS1.GetEnumerator();

        while (psEnumerator.MoveNext())
        {
            Console.WriteLine(psEnumerator.Current);
        }

        return true;
    }
    // The following method uses the LocalIntranet permission set to create
    // a custom permission set named MyCompany.  The new permission set is
    // added to local Machine policy.  The custom named permission set is returned.
    private static NamedPermissionSet CreateCompanyPermission()
    {
        IEnumerator policyEnumerator = SecurityManager.PolicyHierarchy();

        // Move through the policy levels to the Machine policy level.
        while (policyEnumerator.MoveNext())
        {
            PolicyLevel currentLevel = (PolicyLevel)policyEnumerator.Current;

            if (currentLevel.Label == "Machine")
            {
                // Enumerate the permission sets in the Machine policy level.
                IList namedPermissions = currentLevel.NamedPermissionSets;
                IEnumerator namedPermission = namedPermissions.GetEnumerator();

                // Locate the LocalIntranet permission set.
                while (namedPermission.MoveNext())
                {
                    if (((NamedPermissionSet)namedPermission.Current).Name == "LocalIntranet")
                    {
                        // The current permission set is a copy of the LocalIntranet permission set.
                        // It can be modified to provide the permissions for the new permission set.
                        // Rename the copy to the name chosen for the new permission set.
                        ((NamedPermissionSet)namedPermission.Current).Name = "MyCompany";
                        ((NamedPermissionSet)namedPermission.Current).Description = "My custom named permission set";
                        IEnumerator permissions = ((NamedPermissionSet)namedPermission.Current).GetEnumerator();

                        // Remove the current security permission from the permission set and replace it 
                        // with a new security permission that does not have the right to assert permissions.
                        while (permissions.MoveNext())
                        {
                            if (permissions.Current.GetType().ToString() == "System.Security.Permissions.SecurityPermission")
                            {
                                // Remove the current security permission.
                                ((NamedPermissionSet)namedPermission.Current).RemovePermission(permissions.Current.GetType());

                                // Add a new security permission that only allows execution.
                                ((NamedPermissionSet)namedPermission.Current).AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
                                break;
                            }
                        }

                        try
                        {
                            // If you run this application twice, the following instruction throws
                            // an exception because the named permission set already exists.
                            // You can remove the custom named permission set using either Caspole.exe or the  
                            // .NET Framework Configuration tool (Mscorcfg.msc).
                            currentLevel.AddNamedPermissionSet(((NamedPermissionSet)namedPermission.Current));
                            SecurityManager.SavePolicy();
                            return (NamedPermissionSet)namedPermission.Current;
                        }
                        // Catch the exception for a duplicate permission set.
                        catch (System.ArgumentException e)
                        {
                            Console.WriteLine(e.Message + "\n");
                            return (NamedPermissionSet)namedPermission.Current;
                        }
                    }
                }
            }
        }
        // The following code is executed only if the LocalIntranet permission set has been removed.
        return new NamedPermissionSet("Nothing");
    }

    // Test harness.
    static void Main(string[] args)
    {
        PermissionSetDemo();
        Console.WriteLine("Press any key to exit.");
        Console.Read();
    }
}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?