英語で読む

次の方法で共有


AppDomain.SetPrincipalPolicy(PrincipalPolicy) メソッド

定義

アプリケーション ドメインでスレッドを実行中に、スレッドがプリンシパルにバインドしようとした場合に、プリンシパル オブジェクトと ID オブジェクトをそのスレッドに関連付ける方法を指定します。

C#
public void SetPrincipalPolicy (System.Security.Principal.PrincipalPolicy policy);

パラメーター

policy
PrincipalPolicy

スレッドにアタッチするプリンシパル オブジェクトの型を指定する、PrincipalPolicy のいずれかの値。

実装

例外

アンロードされたアプリケーション ドメインで操作しようとします。

次の例は、このメソッドを使用して SetPrincipalPolicy アプリケーション ドメインのプリンシパル ポリシーを変更したスレッドに対する影響を示しています。 また、このメソッドを使用して SetThreadPrincipal 、アプリケーション ドメイン内のスレッドにアタッチできるプリンシパルを変更する効果も示します。

C#
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();
        }
    }
}

注釈

この値の設定は、プロパティを使用 Thread.CurrentPrincipal する前に設定した場合にのみ有効です。 たとえば、特定のプリンシパル (ジェネリック プリンシパルなど) に設定Thread.CurrentPrincipalし、そのメソッドをSetPrincipalPolicy使用して設定PrincipalPolicyWindowsPrincipalした場合、現在のプリンシパルはジェネリック プリンシパルのままです。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1