PrincipalPermission クラス

定義

宣言セキュリティ アクションと強制セキュリティ アクションの両方のために定義された言語構成要素を使用して、アクティブ プリンシパル (IPrincipal のトピックを参照) をチェックできるようにします。Allows checks against the active principal (see IPrincipal) using the language constructs defined for both declarative and imperative security actions. このクラスは継承できません。This class cannot be inherited.

public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission
継承
PrincipalPermission
属性
実装

次の例では、アクティブなプリンシパルが管理者である必要があります。The following example requires the active principal to be an administrator. パラメーターはですnull。これにより、管理者であるすべてのユーザーが要求を渡すことができます。 nameThe name parameter is null, which enables any user who is an administrator to pass the demand.

注意

Windows Vista では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。In Windows Vista, User Account Control (UAC) determines the privileges of a user. ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. 既定では、ユーザーは標準ユーザー ロールに所属します。By default, you are in the standard user role. 管理者であることを要求するコードを実行するには、最初に、ユーザーの権限を標準ユーザーから管理者に昇格させる必要があります。To execute the code that requires you to be an administrator, you must first elevate your privileges from standard user to administrator. この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

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 がこの情報と一致することを要求できます。By passing identity information (user name and role) to the constructor, PrincipalPermission can be used to demand that the identity of the active principal matches this information.

アクティブなIPrincipalと関連付けらIIdentityれているを一致させるには、指定した id とロールの両方が一致する必要があります。To match the active IPrincipal and associated IIdentity, both the specified identity and role must match. Id null文字列が使用されている場合は、任意の id と一致する要求として解釈されます。If null identity string is used, it is interpreted as a request to match any identity. Role 文字列nullの使用は、どのロールとも一致します。Use of null role string will match any role. 暗黙的に、またnullname rolePrincipalPermissionパラメーターを渡すと、任意IPrincipalのの id およびロールと一致します。By implication, passing null parameter for name or role to PrincipalPermission will match the identity and roles in any IPrincipal. が、認証されたエンティティPrincipalPermissionと認証されてIIdentityいないエンティティのどちらを表しているかを判断するためにのみ、を構築することもできます。It is also possible to construct a PrincipalPermission that only determines whether the IIdentity represents an authenticated or unauthenticated entity. この場合、 nameおよびroleは無視されます。In this case, name and role are ignored.

他のほとんどのアクセスPrincipalPermission許可とはCodeAccessPermission異なり、はを拡張しません。Unlike most other permissions, PrincipalPermission does not extend CodeAccessPermission. ただし、インターフェイスはIPermission実装されています。It does, however, implement the IPermission interface. これは、 PrincipalPermissionがコードアクセス許可ではなく、実行しているアセンブリの id に基づいて付与されていないためです。This is because PrincipalPermission is not a code access permission; that is, it is not granted based on the identity of the executing assembly. 代わりに、コードアクセスとコード id のアクセスDemand許可にIntersect対するアクションの実行方法と一貫性のある方法で、コードが現在のユーザー id に対してアクション (、 Union、など) を実行できるようにします。Instead, it allows code to perform actions (Demand, Union, Intersect, and so on) against the current user identity in a manner consistent with the way those actions are performed for code access and code identity permissions.

重要

プリンシパルのアクセス許可を要求する前に、現在のアプリケーションドメインのプリンシパルポリシーを列挙値WindowsPrincipalに設定する必要があります。Prior to a demand for principal permission it is necessary to set the current application domain's principal policy to the enumeration value WindowsPrincipal. 既定では、プリンシパルポリシーはにUnauthenticatedPrincipal設定されています。By default, the principal policy is set to UnauthenticatedPrincipal. プリンシパルポリシーをにWindowsPrincipal設定しなかった場合、プリンシパルのアクセス許可に対する要求は失敗します。If you do not set the principal policy to WindowsPrincipal, a demand for principal permission will fail. プリンシパルのアクセス許可が要求される前に、次のコードを実行する必要があります。The following code should be executed before the principal permission is demanded:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

コンストラクター

PrincipalPermission(PermissionState)

PrincipalPermission を指定して、PermissionState クラスの新しいインスタンスを初期化します。Initializes a new instance of the PrincipalPermission class with the specified PermissionState.

PrincipalPermission(String, String)

指定した namerole を使用して PrincipalPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the PrincipalPermission class for the specified name and role.

PrincipalPermission(String, String, Boolean)

指定した namerole、および認証ステータスを使用して PrincipalPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the PrincipalPermission class for the specified name, role, and authentication status.

メソッド

Copy()

現在のアクセス許可の同一のコピーを作成して返します。Creates and returns an identical copy of the current permission.

Demand()

現在のプリンシパルが、現在のアクセス許可によって指定されたプリンシパルと一致しているかどうかを実行時に判断します。Determines at run time whether the current principal matches the principal specified by the current permission.

Equals(Object)

指定した PrincipalPermission オブジェクトが、現在の PrincipalPermission と等しいかどうかを判断します。Determines whether the specified PrincipalPermission object is equal to the current PrincipalPermission.

FromXml(SecurityElement)

XML エンコードから指定された状態で、アクセス許可を再構築します。Reconstructs a permission with a specified state from an XML encoding.

GetHashCode()

ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適している、PrincipalPermission オブジェクトのハッシュ コードを取得します。Gets a hash code for the PrincipalPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
Intersect(IPermission)

現在のアクセス許可と指定したアクセス許可の積集合となるアクセス許可を作成して返します。Creates and returns a permission that is the intersection of the current permission and the specified permission.

IsSubsetOf(IPermission)

現在のアクセス許可が、指定したアクセス許可のサブセットであるかどうかを判断します。Determines whether the current permission is a subset of the specified permission.

IsUnrestricted()

現在のアクセス許可が無制限かどうかを示す値を返します。Returns a value indicating whether the current permission is unrestricted.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のアクセス許可を表す文字列を作成して返します。Creates and returns a string representing the current permission.

ToXml()

アクセス許可とその現在の状態の XML エンコードを作成します。Creates an XML encoding of the permission and its current state.

Union(IPermission)

現在のアクセス許可と指定されたアクセス許可の和集合であるアクセス許可を作成します。Creates a permission that is the union of the current permission and the specified permission.

適用対象

こちらもご覧ください