HostProtectionAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Achtung
Code Access Security is not supported or honored by the runtime.
Ermöglicht das Bestimmen von Hostsicherheitsanforderungen mithilfe von Deklarationssicherheitsaktionen. Diese Klasse kann nicht vererbt werden.
public ref class HostProtectionAttribute sealed : System::Security::Permissions::CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class HostProtectionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class HostProtectionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
public sealed class HostProtectionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type HostProtectionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type HostProtectionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
type HostProtectionAttribute = class
inherit CodeAccessSecurityAttribute
Public NotInheritable Class HostProtectionAttribute
Inherits CodeAccessSecurityAttribute
- Vererbung
- Attribute
Beispiele
Im folgenden Codebeispiel wird die Verwendung des HostProtectionAttribute Attributs mit einer Vielzahl von HostProtectionResource Werten veranschaulicht.
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Security;
using namespace System::Security::Policy;
using namespace System::Security::Principal;
using namespace System::Security::Permissions;
using namespace System::Diagnostics;
using namespace System::ComponentModel;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;
// The following class is an example of code that exposes external process management.
// Add the LicenseProviderAttribute to the control.
[LicenseProvider(LicFileLicenseProvider::typeid)]
public ref class MyControl: public System::Windows::Forms::Control
{
private:
// Create a new, null license.
License^ license;
public:
[HostProtection(ExternalProcessMgmt=true)]
MyControl()
{
license = nullptr;
// Determine if a valid license can be granted.
bool isValid = LicenseManager::IsValid( MyControl::typeid );
Console::WriteLine( "The result of the IsValid method call is {0}", isValid );
}
};
// If this application is run on a server that implements host protection, the HostProtection 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. HostProtection 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 HostProtection attribute
// might be meaningfully used. The environment required to demonstrate a particular HostProtection is
// too complex to invoke within the scope of this sample.
public ref class HostProtectionExample
{
public:
static int Success = 100;
private:
// 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.
// Exit the sample when an exception is thrown.
[HostProtection(SharedState=true,SelfAffectingProcessMgmt=true)]
[HostProtection(Resources=HostProtectionResource::SharedState|
HostProtectionResource::SelfAffectingProcessMgmt)]
static void Exit( String^ Message, int Code )
{
Console::WriteLine( "\nFAILED: {0} {1}", Message, Code );
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.
// This method allows the user to quit the sample.
[HostProtection(SharedState=true,SelfAffectingProcessMgmt=true,
SelfAffectingThreading=true,UI=true)]
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.
// ApplyIdentity sets the current identity.
[HostProtection(SharedState=true,SelfAffectingThreading=true,
SecurityInfrastructure=true)]
static int ApplyIdentity()
{
array<String^>^roles = {"User"};
try
{
AppDomain^ mAD = AppDomain::CurrentDomain;
GenericPrincipal^ mGenPr = gcnew GenericPrincipal( WindowsIdentity::GetCurrent(),roles );
mAD->SetPrincipalPolicy( PrincipalPolicy::WindowsPrincipal );
mAD->SetThreadPrincipal( mGenPr );
return Success;
}
catch ( Exception^ e )
{
Exit( e->ToString(), 5 );
}
return 0;
}
public:
// The following method is started on a separate thread.
[PermissionSet(SecurityAction::Demand, Name="FullTrust")]
static void WatchFileEvents()
{
try
{
Console::WriteLine( "In the child thread." );
FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
watcher->Path = "C:\\Temp";
// Watch for changes in LastAccess and LastWrite times, and
// name changes to files or directories.
watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess | NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);
// Watch only text files.
watcher->Filter = "*.txt";
// Add event handlers.
watcher->Changed += gcnew FileSystemEventHandler( OnChanged );
watcher->Created += gcnew FileSystemEventHandler( OnChanged );
watcher->Deleted += gcnew 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 );
}
}
private:
// Use the enumeration flags to indicate that this method exposes synchronization
// and external threading.
[HostProtection(Synchronization=true,ExternalThreading=true)]
static void StartThread()
{
Thread^ t = gcnew Thread( gcnew 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 );
}
public:
// Call methods that show the use of the HostProtectionResource enumeration.
[HostProtection(Resources=HostProtectionResource::All)]
static int Main()
{
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 = gcnew 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: {0} {1}", e->FullPath, e->ChangeType );
}
};
int main()
{
return HostProtectionExample::Main();
}
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;
}
}
}
}
Imports System.IO
Imports System.Threading
Imports System.Security
Imports System.Security.Policy
Imports System.Security.Principal
Imports System.Security.Permissions
Imports System.Diagnostics
Imports System.ComponentModel
Imports 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 Shared Success As Integer = 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 Or _
HostProtectionResource.SelfAffectingProcessMgmt)> _
Private Shared Sub [Exit](ByVal Message As String, ByVal Code As Integer)
' Exit the sample when an exception is thrown.
Console.WriteLine((ControlChars.Lf & "FAILED: " & Message & " " & _
Code.ToString()))
Environment.ExitCode = Code
Environment.Exit(Code)
End Sub
' 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)> _
Private Shared Sub ExecuteBreak()
' This method allows the user to quit the sample.
Console.WriteLine("Executing Debugger.Break.")
Debugger.Break()
Debugger.Log(1, "info", "test message")
End Sub
' 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)> _
Private Shared Function ApplyIdentity() As Integer
' ApplyIdentity sets the current identity.
Dim roles(1) As String
Try
Dim mAD As AppDomain = AppDomain.CurrentDomain
Dim mGenPr As _
New GenericPrincipal(WindowsIdentity.GetCurrent(), roles)
mAD.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
mAD.SetThreadPrincipal(mGenPr)
Return Success
Catch e As Exception
[Exit](e.ToString(), 5)
End Try
Return 0
End Function 'ApplyIdentity
' The following method is started on a separate thread.
Public Shared Sub WatchFileEvents()
Try
Console.WriteLine("In the child thread.")
Dim watcher As 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 Or _
NotifyFilters.LastWrite Or NotifyFilters.FileName Or _
NotifyFilters.DirectoryName
' Watch only text files.
watcher.Filter = "*.txt"
' Add event handlers.
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnChanged
AddHandler watcher.Deleted, AddressOf OnChanged
' Begin watching.
watcher.EnableRaisingEvents = True
' Wait for the user to quit the program.
Console.WriteLine("Event handlers have been enabled.")
While Console.ReadLine() <> "q"c
End While
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
' Use the enumeration flags to indicate that this method exposes
' synchronization and external threading.
<HostProtectionAttribute(Synchronization := True, _
ExternalThreading := True)> _
Private Shared Sub StartThread()
Dim t As New Thread(New ThreadStart(AddressOf 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)
End Sub
' Call methods that show the use of the HostProtectionResource enumeration.
<HostProtectionAttribute(Resources := HostProtectionResource.All)> _
Overloads Shared Function Main(ByVal args() As String) As Integer
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") Then
File.Delete("C:\Temp\MyTestFile.txt")
End If
Dim sr As StreamWriter = 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.
Dim myControl As New MyControl()
Console.WriteLine("Enter 'q' to quit the sample.")
Return 100
Catch e As Exception
[Exit](e.ToString(), 0)
Return 0
End Try
End Function 'Main
' Define the event handlers.
Private Shared Sub OnChanged(ByVal [source] As Object, _
ByVal e As FileSystemEventArgs)
' Specify whether a file is changed, created, or deleted.
Console.WriteLine("In the OnChanged event handler.")
Console.WriteLine(("File: " & e.FullPath & " " & _
e.ChangeType.ToString()))
End Sub
End Class
' The following class is an example of code that exposes
' external process management.
' Add the LicenseProviderAttribute to the control.
<LicenseProvider(GetType(LicFileLicenseProvider))> _
Public Class MyControl
Inherits System.Windows.Forms.Control
' Create a new, null license.
Private license As License = Nothing
<HostProtectionAttribute(ExternalProcessMgmt := True)> _
Public Sub New()
' Determine if a valid license can be granted.
Dim isValid As Boolean = LicenseManager.IsValid(GetType(MyControl))
Console.WriteLine(("The result of the IsValid method call is " & _
isValid.ToString()))
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (license Is Nothing) Then
license.Dispose()
license = Nothing
End If
End If
End Sub
End Class
Hinweise
Achtung
Die Codezugriffssicherheit (CAS, Code Access Security) ist in allen Versionen von .NET Framework und .NET veraltet. Aktuelle Versionen von .NET berücksichtigen keine CAS-Anmerkungen und erzeugen Fehler, wenn CAS-bezogene APIs verwendet werden. Entwickler*innen sollten alternative Mittel zum Ausführen von Sicherheitsaufgaben suchen.
Dieses Attribut wirkt sich nur auf nicht verwaltete Anwendungen aus, die die Common Language Runtime hosten und Hostschutz implementieren, z. B. SQL Server. Wenn der Code in einer Clientanwendung oder auf einem Server ausgeführt wird, der nicht Teil eines geschützten Hostbereichs ist, „verschwindet“ das Attribut. Es wird also nicht erkannt und daher nicht angewendet. Die Anwendung der Sicherheitsaktion führt basierend auf den Hostressourcen, die von der Klasse oder Methode verfügbar gemacht werden, zur Erstellung eines Linkaufrufs.
Wichtig
Der Zweck dieses Attributs besteht darin, hostspezifische Richtlinien für Programmiermodelle durchzusetzen. Ein erzwungenes Sicherheitsverhalten ist jedoch nicht das Ziel. Obwohl ein Linkaufruf verwendet wird, um auf Übereinstimmung mit den Programmiermodellanforderungen zu prüfen, ist das HostProtectionAttribute keine Sicherheitsberechtigung.
Wenn für den Host keine Programmiermodellanforderungen vorliegen, kommt es nicht zu einem Linkaufruf.
Das Attribut identifiziert Folgendes:
Methoden oder Klassen, die nicht mit dem Programmiermodell des Hosts kompatibel sind, jedoch abgesehen davon keine negativen Auswirkungen haben.
Methoden oder Klassen, die nicht mit dem Programmiermodell des Hosts kompatibel sind und zur Destabilisierung von serververwaltetem Benutzercode führen können.
Methoden oder Klassen, die nicht mit dem Programmiermodell des Hosts kompatibel sind und zur Destabilisierung des Serverprozesses selbst führen können.
Hinweis
Wenn Sie eine Klassenbibliothek erstellen, die von Anwendungen aufgerufen werden soll, die in einer geschützten Hostumgebung ausgeführt werden können, sollten Sie dieses Attribut auf Member anwenden, die HostProtectionResource-Kategorien verfügbar machen. Die Verwendung von Membern der .NET Framework-Klassenbibliothek mit diesem Attribut führt nur dazu, dass die unmittelbar aufrufende Methode überprüft wird. Auch der Bibliotheksmember muss auf gleiche Weise seine aufrufende Methode überprüfen.
Hinweis
Verwenden Sie nicht die Ngen.exe (Native Image Generator), um ein natives Image von Assemblys zu erstellen, die HostProtectionAttributedurch geschützt sind. In einer voll vertrauenswürdigen Umgebung wird das Image immer geladen, und HostProtectionAttributein einer teilweise vertrauenswürdigen Umgebung wird das Image nicht geladen.
Konstruktoren
HostProtectionAttribute() |
Veraltet.
Initialisiert eine neue Instanz der HostProtectionAttribute-Klasse mit Standardwerten. |
HostProtectionAttribute(SecurityAction) |
Veraltet.
Initialisiert eine neue Instanz der HostProtectionAttribute-Klasse mit dem angegebenen SecurityAction-Wert. |
Eigenschaften
Action |
Veraltet.
Ruft eine Sicherheitsaktion ab oder legt diese fest. (Geerbt von SecurityAttribute) |
ExternalProcessMgmt |
Veraltet.
Ruft einen Wert ab, der angibt, ob eine externe Prozessverwaltung verfügbar gemacht wird, oder legt diesen fest. |
ExternalThreading |
Veraltet.
Ruft einen Wert ab, der angibt, ob externes Threading verfügbar gemacht wird, oder legt diesen fest. |
MayLeakOnAbort |
Veraltet.
Ruft einen Wert ab, der angibt, ob Ressourcen möglicherweise zu Speicherverlusten beim Beenden der Operation führen, oder legt diesen Wert fest. |
Resources |
Veraltet.
Ruft Flags ab, die Kategorien von Funktionen angeben, die potenziell schädlich für den Host sind, oder legt diese Flags fest. |
SecurityInfrastructure |
Veraltet.
Ruft einen Wert ab, der angibt, ob die Sicherheitsinfrastruktur verfügbar gemacht wird, oder legt diesen fest. |
SelfAffectingProcessMgmt |
Veraltet.
Ruft einen Wert ab, der angibt, ob eine sich selbst beeinflussende Prozessverwaltung verfügbar gemacht wird, oder legt diesen fest. |
SelfAffectingThreading |
Veraltet.
Ruft einen Wert ab, der angibt, ob ein sich selbst beeinflussendes Threading verfügbar gemacht wird, oder legt diesen Wert fest. |
SharedState |
Veraltet.
Ruft einen Wert ab, der angibt, ob der Freigabezustand verfügbar gemacht wird, oder legt diesen Wert fest. |
Synchronization |
Veraltet.
Ruft einen Wert ab, der angibt, ob eine Synchronisierung verfügbar gemacht wird, oder legt diesen fest. |
TypeId |
Veraltet.
Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab. (Geerbt von Attribute) |
UI |
Veraltet.
Ruft einen Wert ab, der angibt, ob die Benutzeroberfläche verfügbar gemacht wird, oder legt diesen fest. |
Unrestricted |
Veraltet.
Ruft einen Wert ab, der angibt, ob eine vollständige (uneingeschränkte) Berechtigung für die durch das Attribut geschützte Ressource deklariert ist, oder legt diesen fest. (Geerbt von SecurityAttribute) |
Methoden
CreatePermission() |
Veraltet.
Erstellt eine neue Hostsicherheitsberechtigung und gibt diese zurück. |
Equals(Object) |
Veraltet.
Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Geerbt von Attribute) |
GetHashCode() |
Veraltet.
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
GetType() |
Veraltet.
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
IsDefaultAttribute() |
Veraltet.
Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
Match(Object) |
Veraltet.
Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Geerbt von Attribute) |
MemberwiseClone() |
Veraltet.
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Veraltet.
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Veraltet.
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Geerbt von Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Veraltet.
Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Geerbt von Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Veraltet.
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Geerbt von Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Veraltet.
Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Geerbt von Attribute) |