Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

HostProtectionAttribute-Klasse

 

Ermöglicht das Bestimmen von Hostsicherheitsanforderungen mithilfe von Deklarationssicherheitsaktionen. Diese Klasse kann nicht vererbt werden.

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

System.Object
  System.Attribute
    System.Security.Permissions.SecurityAttribute
      System.Security.Permissions.CodeAccessSecurityAttribute
        System.Security.Permissions.HostProtectionAttribute

[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Delegate, 
	AllowMultiple = true, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class HostProtectionAttribute : CodeAccessSecurityAttribute

NameBeschreibung
System_CAPS_pubmethodHostProtectionAttribute()

Initialisiert eine neue Instanz der HostProtectionAttribute-Klasse mit Standardwerten.

System_CAPS_pubmethodHostProtectionAttribute(SecurityAction)

Initialisiert eine neue Instanz der HostProtectionAttribute-Klasse mit dem angegebenen SecurityAction-Wert.

NameBeschreibung
System_CAPS_pubpropertyAction

Ruft eine Sicherheitsaktion ab oder legt diese fest.(Geerbt von SecurityAttribute.)

System_CAPS_pubpropertyExternalProcessMgmt

Ruft einen Wert ab, der angibt, ob eine externe Prozessverwaltung verfügbar gemacht wird, oder legt diesen fest.

System_CAPS_pubpropertyExternalThreading

Ruft einen Wert ab, der angibt, ob externes Threading verfügbar gemacht wird, oder legt diesen fest.

System_CAPS_pubpropertyMayLeakOnAbort

Ruft einen Wert ab, der angibt, ob Ressourcen möglicherweise zu Speicherverlusten beim Beenden der Operation führen, oder legt diesen Wert fest.

System_CAPS_pubpropertyResources

Ruft Flags ab, die Kategorien von Funktionen angeben, die potenziell schädlich für den Host sind, oder legt diese Flags fest.

System_CAPS_pubpropertySecurityInfrastructure

Ruft einen Wert ab, der angibt, ob die Sicherheitsinfrastruktur verfügbar gemacht wird, oder legt diesen fest.

System_CAPS_pubpropertySelfAffectingProcessMgmt

Ruft einen Wert ab, der angibt, ob eine sich selbst beeinflussende Prozessverwaltung verfügbar gemacht wird, oder legt diesen fest.

System_CAPS_pubpropertySelfAffectingThreading

Ruft einen Wert ab, der angibt, ob ein sich selbst beeinflussendes Threading verfügbar gemacht wird, oder legt diesen Wert fest.

System_CAPS_pubpropertySharedState

Ruft einen Wert ab, der angibt, ob der Freigabezustand verfügbar gemacht wird, oder legt diesen Wert fest.

System_CAPS_pubpropertySynchronization

Ruft einen Wert ab, der angibt, ob eine Synchronisierung verfügbar gemacht wird, oder legt diesen fest.

System_CAPS_pubpropertyTypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von Attribute.)

System_CAPS_pubpropertyUI

Ruft einen Wert ab, der angibt, ob die Benutzeroberfläche verfügbar gemacht wird, oder legt diesen fest.

System_CAPS_pubpropertyUnrestricted

Ruft ab oder legt einen Wert, der angibt, ob die vollständige (uneingeschränkte) Berechtigung für die durch das Attribut geschützte Ressource deklariert ist.(Geerbt von SecurityAttribute.)

NameBeschreibung
System_CAPS_pubmethodCreatePermission()

Erstellt eine neue Hostsicherheitsberechtigung und gibt diese zurück.(Setzt "SecurityAttribute.CreatePermission()" außer Kraft.)

System_CAPS_pubmethodEquals(Object)

Diese API unterstützt die producto-Infrastruktur und sollte nicht direkt aus Ihrem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von Attribute.)

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von Attribute.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von Attribute.)

System_CAPS_pubmethodMatch(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von Attribute.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von Object.)

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von Attribute.)

Dieses Attribut wirkt sich nur nicht verwaltete Anwendung, die die common Language Runtime implementieren Hostschutz und wie SQL Server hosten. Wenn der Code in einer Clientanwendung ausgeführt wird, oder auf einem Server, der nicht Host geschützt, das Attribut "evaporates"; Es wird nicht erkannt und daher nicht angewendet. Bei Sicherheit Aktion führt Grundlage auf der bei der Erstellung eines Verknüpfungsaufrufs Hostressourcen der Klasse oder Methode verfügbar macht.

System_CAPS_importantWichtig

Der Zweck dieses Attributs ist das hostspezifische Modell Programmierungsrichtlinien, nicht das Sicherheitsverhalten erzwingen. Obwohl ein Linkaufruf überprüft auf Übereinstimmung mit programming modellanforderungen verwendet wird die HostProtectionAttribute ist keine Sicherheitsberechtigung.

Wenn der Host keine programming modellanforderungen, werden die Linkaufruf nicht ausgeführt.

Dieses Attribut identifiziert:

  • Methoden oder Klassen, die nicht den Host Programmiermodell, sind jedoch andernfalls ohne Auswirkung.

  • Methoden oder Klassen, die nicht mit der und zur Destabilisierung des vom Server verwalteten Benutzercodes führen könnte.

  • Methoden oder Klassen, die nicht mit der und zur Destabilisierung des Serverprozesses führen könnte.

System_CAPS_noteHinweis

Wenn Sie eine Klassenbibliothek erstellen, die von Clientanwendungen aufgerufen werden, die in einer geschützten hostumgebung ausgeführt werden kann, sollten Sie dieses Attribut anwenden, um Member, verfügbar machen HostProtectionResource Kategorien. Die .NET Framework-Bibliothek Member mit diesem Attribut verursachen nur den unmittelbaren Aufrufer überprüft werden soll. Ihre Bibliotheksmember muss auch eine Überprüfung der unmittelbare Aufrufer auf die gleiche Weise verursachen.

System_CAPS_noteHinweis

Verwenden Sie nicht die Ngen.exe (Native Image Generator) zum Erstellen eines systemeigenen Images der Assemblys, die von geschützt werden die HostProtectionAttribute. In einer voll vertrauenswürdigen Umgebung, das Bild wird immer geladen, ohne Rücksicht auf die HostProtectionAttribute, und in einer teilweise vertrauenswürdigen Umgebung nicht das Bild geladen wird.

Das folgende Codebeispiel veranschaulicht die Verwendung der HostProtectionAttribute Attribut mit einer Vielzahl von HostProtectionResource Werte.

using System;
using System.IO;
using System.Threading;
using System.Security;
using System.Security.Policy;
using System.Security.Principal;
using System.Security.Permissions;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows.Forms;

// If this application is run on a server that implements host protection, the 
// HostProtectionAttribute attribute is applied. If the application is run on   
// a server that is not host-protected, the attribute evaporates; it is not  
// detected and therefore not applied. Host protection can be configured with  
// members of the HostProtectionResource enumeration to customize the  
// protection offered.
// The primary intent of this sample is to show situations in which the 
// HostProtectionAttribute attribute might be meaningfully used. The  
// environment required to demonstrate a particular behavior is
// too complex to invoke within the scope of this sample.

class HostProtectionExample
{
    public static int Success = 100;

    // Use the enumeration flags to indicate that this method exposes 
    // shared state and self-affecting process management.
    // Either of the following attribute statements can be used to set the
    // resource flags.
    [HostProtectionAttribute(SharedState = true, 
        SelfAffectingProcessMgmt = true)]
    [HostProtectionAttribute(Resources = HostProtectionResource.SharedState |
         HostProtectionResource.SelfAffectingProcessMgmt)]
    private static void Exit(string Message, int Code)
    {
        // Exit the sample when an exception is thrown.
        Console.WriteLine("\nFAILED: " + Message + " " + Code.ToString());
        Environment.ExitCode = Code;
        Environment.Exit(Code);
    }

    // Use the enumeration flags to indicate that this method exposes shared 
    // state, self-affecting process management, and self-affecting threading.
    [HostProtectionAttribute(SharedState=true, SelfAffectingProcessMgmt=true,
         SelfAffectingThreading=true, UI=true)]
    // This method allows the user to quit the sample.
    private static void ExecuteBreak()
    {
        Console.WriteLine("Executing Debugger.Break.");
        Debugger.Break();
        Debugger.Log(1,"info","test message");
    }

    // Use the enumeration flags to indicate that this method exposes shared 
    // state, self-affecting threading, and the security infrastructure.
    [HostProtectionAttribute(SharedState=true, SelfAffectingThreading=true,
         SecurityInfrastructure=true)]
    // ApplyIdentity sets the current identity.
    private static int ApplyIdentity()
    {
        string[] roles = {"User"};
        try
        {
            AppDomain mAD = AppDomain.CurrentDomain;
            GenericPrincipal mGenPr = 
                new GenericPrincipal(WindowsIdentity.GetCurrent(), roles);
            mAD.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            mAD.SetThreadPrincipal(mGenPr);
            return Success;
        }
        catch (Exception e)
        {
            Exit(e.ToString(), 5);
        }
        return 0;
    }

    // The following method is started on a separate thread.
    public static void WatchFileEvents()
    {
        try
        {
            Console.WriteLine("In the child thread.");
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = "C:\\Temp";

            // Watch for changes in LastAccess and LastWrite times, and
            // name changes to files or directories.
            watcher.NotifyFilter = NotifyFilters.LastAccess 
                | NotifyFilters.LastWrite
                | NotifyFilters.FileName | NotifyFilters.DirectoryName;

            // Watch only text files.
            watcher.Filter = "*.txt";

            // Add event handlers.
            watcher.Changed += new FileSystemEventHandler(OnChanged);
            watcher.Created += new FileSystemEventHandler(OnChanged);
            watcher.Deleted += new FileSystemEventHandler(OnChanged);

            // Begin watching.
            watcher.EnableRaisingEvents = true;

            // Wait for the user to quit the program.
            Console.WriteLine("Event handlers have been enabled.");
            while(Console.Read()!='q');
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }

    // Use the enumeration flags to indicate that this method exposes 
    // synchronization and external threading.
    [HostProtectionAttribute(Synchronization=true, ExternalThreading=true)]
    private static void StartThread()
    {
        Thread t = new Thread(new ThreadStart(WatchFileEvents));

        // Start the new thread. On a uniprocessor, the thread is not given
        // any processor time until the main thread yields the processor.
        t.Start();

        // Give the new thread a chance to execute.
        Thread.Sleep(1000);
    }

    // Call methods that show the use of the HostProtectionResource enumeration.
    [HostProtectionAttribute(Resources=HostProtectionResource.All)]
    static int Main(string [] args)
    {
        try
        {
            // Show use of the HostProtectionResource.SharedState,
            // HostProtectionResource.SelfAffectingThreading, and
            // HostProtectionResource.Security enumeration values.
            ApplyIdentity();
            Directory.CreateDirectory("C:\\Temp");

            // Show use of the HostProtectionResource.Synchronization and
            // HostProtectionResource.ExternalThreading enumeration values.
            StartThread();
            Console.WriteLine("In the main thread.");
            Console.WriteLine("Deleting and creating 'MyTestFile.txt'.");
            if (File.Exists("C:\\Temp\\MyTestFile.txt"))
            {
                File.Delete("C:\\Temp\\MyTestFile.txt");
            }

            StreamWriter sr = File.CreateText("C:\\Temp\\MyTestFile.txt");
            sr.WriteLine ("This is my file.");
            sr.Close();
            Thread.Sleep(1000);

            // Show use of the HostProtectionResource.SharedState,
            // HostProtectionResource.SelfProcessMgmt,
            // HostProtectionResource.SelfAffectingThreading, and
            // HostProtectionResource.UI enumeration values.
            ExecuteBreak();

            // Show the use of the 
            // HostProtectionResource.ExternalProcessManagement 
            // enumeration value.
            MyControl myControl = new MyControl ();
            Console.WriteLine ("Enter 'q' to quit the sample.");
            return 100;
        }
        catch (Exception e)
        {
            Exit(e.ToString(), 0);
            return 0;
        }
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify whether a file is changed, created, or deleted.
        Console.WriteLine("In the OnChanged event handler.");
        Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
    }
}

// The following class is an example of code that exposes 
// external process management.
// Add the LicenseProviderAttribute to the control.
[LicenseProvider (typeof(LicFileLicenseProvider))]
public class MyControl : System.Windows.Forms.Control
{
    // Create a new, null license.
    private License license = null;

    [HostProtection (ExternalProcessMgmt = true)]
    public MyControl ()
    {
        // Determine if a valid license can be granted.
        bool isValid = LicenseManager.IsValid (typeof(MyControl));
        Console.WriteLine ("The result of the IsValid method call is " + 
            isValid.ToString ());
    }

    protected override void Dispose (bool disposing)
    {
        if (disposing)
        {
            if (license != null)
            {
                license.Dispose ();
                license = null;
            }
        }
    }
}

.NET Framework
Verfügbar seit 2.0

Öffentliche statische (in Visual Basic freigegebene) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Zurück zum Anfang
Anzeigen: