Share via


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
属性
実装

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

Note

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

注釈

注意事項

コード アクセス セキュリティ (CAS) は、.NET Framework と .NET のすべてのバージョンで非推奨になりました。 最近のバージョンの .NET では、CAS 関連の API が使われている場合、CAS の注釈は使われず、エラーが発生します。 開発者は、代わりの手段を見つけてセキュリティ タスクを実現する必要があります。

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

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

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

重要

プリンシパルアクセス許可を要求する前に、現在のアプリケーション ドメインのプリンシパル ポリシーを列挙値 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)
古い.

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

適用対象

こちらもご覧ください