PrincipalPermission クラス

定義

注意事項

Code Access Security is not supported or honored by the runtime.

宣言型と命令型の両方のセキュリティ アクションに対して定義された言語コンストラクトを使用した、アクティブなプリンシパルに対するチェックを許可します (IPrincipal を参照)。 このクラスは継承できません。

public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[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 PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
[<System.Serializable>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission
継承
PrincipalPermission
属性
実装

次の例では、アクティブなプリンシパルが管理者である必要があります。 パラメーターは namenull管理者であるすべてのユーザーが要求を渡すことができます。

注意

Windows Vista では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 管理者であることを要求するコードを実行するには、最初に、ユーザーの権限を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Policy;
using namespace System::Security::Principal;

int main(array<System::String ^> ^args)
{
    System::String^ null;
    AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
    PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
      principalPerm->Demand();
      Console::WriteLine("Demand succeeded");
    return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{

    public static void Main()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
        principalPerm.Demand();
        Console.WriteLine("Demand succeeded.");
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal



Class SecurityPrincipalDemo


    Public Shared Sub Main()
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
        Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
        principalPerm.Demand()
        Console.WriteLine("Demand succeeded.")

    End Sub
End Class

注釈

ID 情報 (ユーザー名とロール) をコンストラクターに渡すことによって、 PrincipalPermission アクティブ プリンシパルの ID がこの情報と一致することを要求するために使用できます。

アクティブ IPrincipal で関連付けられている ID と一 IIdentity致するには、指定した ID とロールの両方が一致する必要があります。 ID 文字列が使用されている場合 null 、任意の ID に一致する要求として解釈されます。 ロール文字列の使用は、任意の null ロールと一致します。 意味により、パラメーターをPrincipalPermission name role渡すとnull、任意IPrincipalの ID とロールと一致します。 認証されたエンティティと認証されていないエンティティのどちらをIIdentity表すかのみを決定するエンティティを構築PrincipalPermissionすることもできます。 この場合、 name 無視 role されます。

他のほとんどのアクセス許可とは異なり、 PrincipalPermission 拡張 CodeAccessPermissionされません。 ただし、インターフェイスは実装されます IPermission 。 これは、 PrincipalPermission コード アクセス許可ではなく、実行中のアセンブリの ID に基づいて付与されないためです。 代わりに、コードは、UnionIntersectコード アクセスとコード ID のアクセス許可に対してこれらのアクションを実行する方法と一致する方法で、現在のユーザー ID に対してアクション (Demand、など) を実行できます。

重要

プリンシパルのアクセス許可を要求する前に、現在のアプリケーション ドメインのプリンシパル ポリシーを列挙値 WindowsPrincipalに設定する必要があります。 既定では、プリンシパル ポリシーは UnauthenticatedPrincipal. プリンシパル ポリシー WindowsPrincipalを設定しない場合、プリンシパルアクセス許可の要求は失敗します。 プリンシパルのアクセス許可が要求される前に、次のコードを実行する必要があります。

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

コンストラクター

PrincipalPermission(PermissionState)

PrincipalPermission を指定して、PermissionState クラスの新しいインスタンスを初期化します。

PrincipalPermission(String, String)

指定した name および rolePrincipalPermission クラスの新しいインスタンスを初期化します。

PrincipalPermission(String, String, Boolean)

指定した namerole、および認証ステータスの PrincipalPermission クラスの新しいインスタンスを初期化します。

メソッド

Copy()

現在のアクセス許可の同一のコピーを作成して返します。

Demand()

実行時に、現在のプリンシパルが、現在のアクセス許可で指定されたプリンシパルと一致するかどうかを判別します。

Equals(Object)

指定した PrincipalPermission オブジェクトが、現在の PrincipalPermission と等しいかどうかを判断します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
FromXml(SecurityElement)

XML エンコードから指定された状態で、アクセス許可を再構築します。

GetHashCode()

ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適している、PrincipalPermission オブジェクトのハッシュ コードを取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Intersect(IPermission)

現在のアクセス許可と指定したアクセス許可の積集合となるアクセス許可を作成して返します。

IsSubsetOf(IPermission)

現在のアクセス許可が、指定したアクセス許可のサブセットであるかどうかを判断します。

IsUnrestricted()

現在のアクセス許可が無制限かどうかを示す値を返します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のアクセス許可を表す文字列を作成して返します。

ToXml()

アクセス許可とその現在の状態の XML エンコードを作成します。

Union(IPermission)

現在のアクセス許可と指定されたアクセス許可の和集合であるアクセス許可を作成します。

適用対象

こちらもご覧ください