クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
.NET 開発
以前のバージョン
.NET Framework SDK 2.0
System.Threading
Thread クラス
Thread プロパティ
 CurrentPrincipal プロパティ
すべて縮小/すべて展開 すべて縮小
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
Thread.CurrentPrincipal プロパティ
ロールベースのセキュリティに関する、スレッドの現在のプリンシパルを取得または設定します。

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)

Visual Basic (宣言)
Public Shared Property CurrentPrincipal As IPrincipal
Visual Basic (使用法)
Dim value As IPrincipal

value = Thread.CurrentPrincipal

Thread.CurrentPrincipal = value
C#
public static IPrincipal CurrentPrincipal { get; set; }
C++
public:
static property IPrincipal^ CurrentPrincipal {
	IPrincipal^ get ();
	void set (IPrincipal^ value);
}
J#
/** @property */
public static IPrincipal get_CurrentPrincipal ()

/** @property */
public static void set_CurrentPrincipal (IPrincipal value)
JScript
public static function get CurrentPrincipal () : IPrincipal

public static function set CurrentPrincipal (value : IPrincipal)
XAML
適用できません。

プロパティ値

セキュリティ コンテキストを表す IPrincipal 値。
例外の種類条件

SecurityException

呼び出し元に、プリンシパルの設定に必要なアクセス許可がありません。

スレッドのプリンシパルを設定および取得する方法の例を次に示します。

Visual Basic
Option Explicit
Option Strict

Imports Microsoft.VisualBasic
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports System.Security.Principal
Imports System.Threading

' Request permission to set thread principal.
<Assembly: SecurityPermissionAttribute( _
    SecurityAction.RequestOptional, ControlPrincipal := True)>

Public Class Principal

    <MTAThread> _
    Shared Sub Main()
    
        Dim rolesArray As String() = {"managers", "executives"}
        Try
            ' Set the principal to a new generic principal.
            Thread.CurrentPrincipal = _
                New GenericPrincipal(New GenericIdentity( _
                "Bob", "Passport"), rolesArray)

        Catch secureException As SecurityException
            Console.WriteLine("{0}: Permission to set Principal " & _
                "is denied.", secureException.GetType().Name)
        End Try

        Dim threadPrincipal As IPrincipal = Thread.CurrentPrincipal
        Console.WriteLine( _
            "Name: {0}" & vbCrLf & "IsAuthenticated:" & _
            " {1}" & vbCrLf & "AuthenticationType: {2}", _
            threadPrincipal.Identity.Name, _
            threadPrincipal.Identity.IsAuthenticated, _
            threadPrincipal.Identity.AuthenticationType)
    
    End Sub
End Class
C#
using System;
using System.Security;
using System.Security.Permissions;
using System.Security.Principal;
using System.Threading;

// Request permission to set thread principal.
[assembly: SecurityPermissionAttribute(
    SecurityAction.RequestOptional, ControlPrincipal = true)]
class Principal
{
    static void Main()
    {
        string[] rolesArray = {"managers", "executives"};
        try
        {
            // Set the principal to a new generic principal.
            Thread.CurrentPrincipal = 
                new GenericPrincipal(new GenericIdentity(
                "Bob", "Passport"), rolesArray);
        }
        catch(SecurityException secureException)
        {
            Console.WriteLine("{0}: Permission to set Principal " +
                "is denied.", secureException.GetType().Name);
        }

        IPrincipal threadPrincipal = Thread.CurrentPrincipal;
        Console.WriteLine("Name: {0}\nIsAuthenticated: {1}" +
            "\nAuthenticationType: {2}", 
            threadPrincipal.Identity.Name, 
            threadPrincipal.Identity.IsAuthenticated,
            threadPrincipal.Identity.AuthenticationType);
    }
}
C++
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Principal;
using namespace System::Threading;

// Request permission to set thread principal.

[assembly:SecurityPermissionAttribute(
SecurityAction::RequestOptional,ControlPrincipal=true)];
[assembly:SecurityPermissionAttribute(
SecurityAction::RequestMinimum,UnmanagedCode=true)];
int main()
{
   array<String^>^rolesArray = {"managers","executives"};
   try
   {
      
      // Set the principal to a new generic principal.
      Thread::CurrentPrincipal = gcnew GenericPrincipal( gcnew GenericIdentity( "Bob","Passport" ),rolesArray );
   }
   catch ( SecurityException^ secureException ) 
   {
      Console::WriteLine( "{0}: Permission to set Principal "
      "is denied.", secureException->GetType()->Name );
   }

   IPrincipal^ threadPrincipal = Thread::CurrentPrincipal;
   Console::WriteLine( "Name: {0}\nIsAuthenticated: {1}"
   "\nAuthenticationType: {2}", threadPrincipal->Identity->Name, threadPrincipal->Identity->IsAuthenticated.ToString(), threadPrincipal->Identity->AuthenticationType );
}
J#
import System.*;
import System.Security.*;
import System.Security.Permissions.*;
import System.Security.Principal.*;
import System.Threading.*;
import System.Threading.Thread;
import System.Security.SecurityManager;

// Request permission to set thread principal.
/** @class.assembly SecurityPermissionAttribute(SecurityAction.RequestOptional,
     ControlPrincipal = true)
 */

class Principal
{
    public static void main(String[] args)
    {
        String rolesArray[] = new String[] { "managers", "executives" };

        try {
            // Set the principal to a new generic principal.
            Thread.set_CurrentPrincipal(new GenericPrincipal
                (new GenericIdentity("Bob", "Passport"), rolesArray));
        }
        catch (SecurityException secureException) {
            Console.WriteLine("{0}: Permission to set Principal " +
                "is denied.", secureException.GetType().get_Name());
        }

        IPrincipal threadPrincipal = Thread.get_CurrentPrincipal();
        Console.WriteLine("Name: {0}\nIsAuthenticated: {1}" +
            "\nAuthenticationType: {2}",
            threadPrincipal.get_Identity().get_Name(),
            String.valueOf(threadPrincipal.get_Identity().get_IsAuthenticated()
            ),threadPrincipal.get_Identity().get_AuthenticationType());
    } //main
} //Principal

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker