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.

AllowPartiallyTrustedCallersAttribute-Klasse

Ermöglicht den Aufruf einer Assembly durch teilweise vertrauenswürdigen Code. Ohne diese Deklaration können nur voll vertrauenswürdige Aufrufer die Assembly verwenden. Diese Klasse kann nicht vererbt werden.

System.Object
  System.Attribute
    System.Security.AllowPartiallyTrustedCallersAttribute

Namespace:  System.Security
Assembly:  mscorlib (in mscorlib.dll)
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false, 
	Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class AllowPartiallyTrustedCallersAttribute : Attribute

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

  Name Beschreibung
Öffentliche Methode AllowPartiallyTrustedCallersAttribute Initialisiert eine neue Instanz der AllowPartiallyTrustedCallersAttribute-Klasse.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Eigenschaft PartialTrustVisibilityLevel Ruft die standardmäßige Sichtbarkeit von teilweisen Vertrauensstellungen für mit dem AllowPartiallyTrustedCallersAttribute-Attribut (APTCA) markierten Code ab oder legt sie fest.
Öffentliche Eigenschaft TypeId Bei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode Equals Infrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
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 GetHashCode Gibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode IsDefaultAttribute Beim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche Methode Match Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang
  Name Beschreibung
Explizite Schnittstellenimplementierung Private Methode _Attribute.GetIDsOfNames Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite Schnittstellenimplementierung Private Methode _Attribute.GetTypeInfo Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite Schnittstellenimplementierung Private Methode _Attribute.GetTypeInfoCount Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite Schnittstellenimplementierung Private Methode _Attribute.Invoke Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)
Zum Seitenanfang
Hinweis Hinweis

.NET Framework, Version 4 führt neue Sicherheitsregeln ein, die sich auf das Verhalten des AllowPartiallyTrustedCallersAttribute-Attributs (siehe Sicherheitstransparenter Code, Ebene 2) auswirken. Im .NET Framework 4 wird der gesamte Code standardmäßig in sicherheitstransparenten Code gesetzt, das heißt, teilweise vertrauenswürdig. Sie können jedoch einzelne Typen und Member kommentieren, um ihnen andere Transparenzattribute zuzuweisen. Weitere Informationen über diese und andere Sicherheitsänderungen finden Sie unter Änderungen der Sicherheit in .NET Framework 4.

.NET Framework, Version 2.0 (Ebene 1 transparent)-Assemblys müssen mit starkem Namen sein, um das AllowPartiallyTrustedCallersAttribute (APTCA)-Attribut effektiv zu verwenden. .NET Framework 4 (Ebene 2)-Assemblys müssen für die Wirksamkeit des APTCA-Attributs keine starken Namen aufweisen, und sie können transparenten, sicherheitskritischen und sicherheitsgeschützten Code enthalten. Weitere Informationen über das Anwenden von Attributen auf Assemblyebene finden Sie unter Anwenden von Attributen.

Wenn eine Assembly mit starkem Namen und Ebene 1 transparent dieses Attribut nicht explizit auf Assemblyebene anwendet, kann es von anderen Assemblys aufgerufen werden, die von der Sicherheitsrichtlinie als vollständig vertrauenswürdig eingestuft wurden. Diese Einschränkung wird erzwungen, indem eine LinkDemand bezüglich FullTrust in jede öffentliche oder geschützte Methode jeder öffentlich zugänglichen Klasse in der Assembly eingefügt wird. Assemblys, die durch teilweise vertrauenswürdigen Code aufgerufen werden sollen, können dies mithilfe von AllowPartiallyTrustedCallersAttribute deklarieren. Ein Beispiel für die Deklaration in C# ist [assembly:AllowPartiallyTrustedCallers], ein Beispiel für die Deklaration in Visual Basic ist <assembly:AllowPartiallyTrustedCallers>.

Warnhinweis Vorsicht

Das Vorhandensein dieses Attributs auf Assemblyebene verhindert das Standardverhalten, bei dem FullTrust-LinkDemand-Sicherheitsüberprüfungen platziert werden, und bewirkt somit, dass die Assembly von beliebigen anderen Assemblys (teilweise oder vollständig vertrauenswürdig) aufgerufen werden kann.

Wenn das APTCA-Attribut vorhanden ist, bleibt die Funktionsweise aller anderen Sicherheitsüberprüfungen wie vorgesehen bestehen, einschließlich aller vorhandenen deklarativen Sicherheitsattribute auf Klassen- oder Methodenebene. Dieses Attribut blockiert nur die implizite Anforderung bezüglich vollständig vertrauenswürdiger Aufrufer.

Dies ist kein deklaratives Sicherheitsattribut, sondern ein reguläres Attribut (es wird von System.Attribute und nicht von System.Security.Permissions.SecurityAttribute abgeleitet).

Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.

Im folgenden Beispiel wird die Verwendung der AllowPartiallyTrustedCallersAttribute-Klasse veranschaulicht.


// The following HTML code can be used to call the user control in this sample.
//
//<HTML>
//	<BODY>
//		<OBJECT id="usercontrol" classid="usercontrol.dll#UserControl.UserControl1" width="800"
//		height="300" style="font-size:12;">
//		</OBJECT>
//		<p>
//	</BODY>
//</HTML>

// To run this test control you must create a strong name key, snkey.snk, and 
// a code group that gives full trust to assemblies signed with snkey.snk.

// The user control displays an OpenFileDialog box, then displays a text box containing the name of 
// the file selected and a list box that displays the contents of the file.  The selected file must 
// contain text in order for the control to display the data properly.

// Caution  This sample demonstrates the use of the Assert method.  Calling Assert removes the 
// requirement that all code in the call chain must be granted permission to access the specified 
// resource, it can open up security vulnerabilities if used incorrectly or inappropriately. Therefore, 
// it should be used with great caution.  Assert should always be followed with a RevertAssert 
// command to restore the security settings.


using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.Reflection;
using System.Runtime.CompilerServices;

// This strong name key is used to create a code group that gives permissions to this assembly.
[assembly: AssemblyKeyFile("snKey.snk")]
[assembly: AssemblyVersion("1.0.0.0")]

// The AllowPartiallyTrustedCallersAttribute requires the assembly to be signed with a strong name key.
// This attribute is necessary since the control is called by either an intranet or Internet
// Web page that should be running under restricted permissions.
[assembly:AllowPartiallyTrustedCallers]
namespace UserControl
{
	// The userControl1 displays an OpenFileDialog box, then displays a text box containing the name of 
	// the file selected and a list box that displays the contents of the file.  The selected file must 
	// contain text in order for the control to display the data properly.
	public class UserControl1 : System.Windows.Forms.UserControl
	{
		private System.Windows.Forms.TextBox textBox1;
		private System.Windows.Forms.ListBox listBox1;
		// Required designer variable.
		private System.ComponentModel.Container components = null;

              // Demand the zone requirement for the calling application.
              [ZoneIdentityPermission(SecurityAction.Demand, Zone = SecurityZone.Intranet)]
		public UserControl1()
		{
			// This call is required by the Windows.Forms Form Designer.
			InitializeComponent();

			// The OpenFileDialog box should not require any special permissions.
			OpenFileDialog fileDialog = new OpenFileDialog();
			if(fileDialog.ShowDialog() == DialogResult.OK)
			{
				// Reading the name of the selected file from the OpenFileDialog box
				// and reading the file requires FileIOPermission.  The user control should 
				// have this permission granted through its code group; the Web page that calls the 
				// control should not have this permission.  The Assert command prevents a stack walk 
				// that would fail because the caller does not have the required FileIOPermission.  
				// The use of Assert can open up security vulnerabilities if used incorrectly or 
				// inappropriately. Therefore, it should be used with great caution.
				// The Assert command should be followed by a RevertAssert as soon as the file operation 
				// is completed.
				new FileIOPermission(PermissionState.Unrestricted).Assert();
				textBox1.Text = fileDialog.FileName;
				// Display the contents of the file in the text box.
				FileStream fsIn = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read, 
					FileShare.Read);
				StreamReader sr = new StreamReader(fsIn);
			
				// Process every line in the file
				for (String Line = sr.ReadLine(); Line != null; Line = sr.ReadLine()) 
				{
					listBox1.Items.Add(Line);
				}
				// It is very important to call RevertAssert to restore the stack walk for
				// file operations.
				FileIOPermission.RevertAssert();
			}

		}

		// Clean up any resources being used.
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if( components != null )
					components.Dispose();
			}
			base.Dispose( disposing );
		}

		#region Component Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.listBox1 = new System.Windows.Forms.ListBox();
			this.SuspendLayout();
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(208, 112);
			this.textBox1.Name = "textBox1";
			this.textBox1.Size = new System.Drawing.Size(320, 20);
			this.textBox1.TabIndex = 0;
			this.textBox1.Text = "textBox1";
			this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
			// 
			// listBox1
			// 
			this.listBox1.Location = new System.Drawing.Point(200, 184);
			this.listBox1.Name = "listBox1";
			this.listBox1.Size = new System.Drawing.Size(336, 108);
			this.listBox1.TabIndex = 1;
			// 
			// UserControl1
			// 
			this.Controls.Add(this.listBox1);
			this.Controls.Add(this.textBox1);
			this.Name = "UserControl1";
			this.Size = new System.Drawing.Size(592, 400);
			this.Load += new System.EventHandler(this.UserControl1_Load);
			this.ResumeLayout(false);

		}
		#endregion

		private void UserControl1_Load(object sender, System.EventArgs e)
		{
		
		}

		private void textBox1_TextChanged(object sender, System.EventArgs e)
		{
		
		}


	}
}


.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?