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

AppDomain.SetPrincipalPolicy-Methode: (PrincipalPolicy)

 

Veröffentlicht: Oktober 2016

Gibt an, wie Haupt- und Identitätsobjekte an einen Thread angefügt werden sollen, wenn während der Ausführung in dieser Anwendungsdomäne versucht wird, den Thread an einen Prinzipal zu binden.

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

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlPrincipal)]
public void SetPrincipalPolicy(
	PrincipalPolicy policy
)

Parameter

policy
Type: System.Security.Principal.PrincipalPolicy

Einer der PrincipalPolicy-Werte, die den Typ des Prinzipalobjekts angeben, das an Threads angefügt werden soll.

Exception Condition
AppDomainUnloadedException

Der Vorgang wird für eine entladene Anwendungsdomäne ausgeführt.

Das Festlegen dieses Werts werden nur wirksam, wenn Sie es vor der Verwendung Festlegen der Thread.CurrentPrincipal Eigenschaft. Z. B., wenn Sie festlegen Thread.CurrentPrincipal auf einen bestimmten Prinzipal (z. B. einen generischen Prinzipal) und dann mit der SetPrincipalPolicy -Methode zum Festlegen der PrincipalPolicy auf WindowsPrincipal, der aktuelle Prinzipal bleibt der generischen Prinzipal.

Das folgende Beispiel zeigt die Auswirkung auf Threads der Verwendung der SetPrincipalPolicy Methode principal Richtlinie der Anwendungsdomäne zu ändern. Außerdem wird gezeigt, die Auswirkung der Verwendung der SetThreadPrincipal Methode, um den Prinzipal zu ändern, die zum Anfügen an Threads in der Anwendungsdomäne verfügbar ist.

using System;
using System.Security.Principal;
using System.Threading;

class ADPrincipal
{
	static void Main(string[] args)
	{
		// Create a new thread with a generic principal.
		Thread t = new Thread(new ThreadStart(PrintPrincipalInformation));
		t.Start();
		t.Join();

		// Set the principal policy to WindowsPrincipal.
		AppDomain currentDomain = AppDomain.CurrentDomain;
		currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

		// The new thread will have a Windows principal representing the
		// current user.
		t = new Thread(new ThreadStart(PrintPrincipalInformation));
		t.Start();
		t.Join();

		// Create a principal to use for new threads.
		IIdentity identity = new GenericIdentity("NewUser");
		IPrincipal principal = new GenericPrincipal(identity, null);
		currentDomain.SetThreadPrincipal(principal);

		// Create a new thread with the principal created above.
		t = new Thread(new ThreadStart(PrintPrincipalInformation));
		t.Start();
		t.Join();

		// Wait for user input before terminating.
		Console.ReadLine();
	}

	static void PrintPrincipalInformation()
	{
		IPrincipal curPrincipal = Thread.CurrentPrincipal;
		if(curPrincipal != null)
		{
			Console.WriteLine("Type: " + curPrincipal.GetType().Name);
			Console.WriteLine("Name: " + curPrincipal.Identity.Name);
			Console.WriteLine("Authenticated: " +
				curPrincipal.Identity.IsAuthenticated);
			Console.WriteLine();
		}
	}
}

SecurityPermission

for ability to manipulate the principal object. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlPrincipal. Security action: F:System.Security.Permissions.SecurityAction.Demand.

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: