PrincipalPermission クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
注意事項
Code Access Security is not supported or honored by the runtime.
宣言型と命令型の両方のセキュリティ アクションに対して定義された言語コンストラクトを使用した、アクティブなプリンシパルに対するチェックを許可します (IPrincipal を参照)。 このクラスは継承できません。
public ref class PrincipalPermission sealed : 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
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}")>]
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
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
に パラメーターname
をPrincipalPermission渡すとnull
、任意IPrincipalの 内の ID とロールと一致します。 認証されたエンティティと認証されていないエンティティのどちらをIIdentity表すかのみを決定する を構築PrincipalPermissionすることもできます。 この場合、 name
と role
は無視されます。
他のほとんどのアクセス許可とは異なり、 PrincipalPermission は を拡張 CodeAccessPermissionしません。 ただし、インターフェイスを実装します IPermission 。 これは、 PrincipalPermission がコード アクセス許可ではなく、実行中のアセンブリの ID に基づいて付与されないためです。 代わりに、コードは、コード アクセスとコード ID のアクセス許可に対するアクションの実行方法と一致する方法で、現在のユーザー ID に対してアクション (DemandUnionIntersect、 など) を実行できます。
重要
プリンシパルアクセス許可を要求する前に、現在のアプリケーション ドメインのプリンシパル ポリシーを列挙値 WindowsPrincipalに設定する必要があります。 既定では、プリンシパル ポリシーは に UnauthenticatedPrincipal設定されます。 プリンシパル ポリシーを に WindowsPrincipal設定しない場合、プリンシパルアクセス許可の要求は失敗します。 プリンシパルのアクセス許可が要求される前に、次のコードを実行する必要があります。
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).
コンストラクター
PrincipalPermission(PermissionState) |
古い.
PrincipalPermission を指定して、PermissionState クラスの新しいインスタンスを初期化します。 |
PrincipalPermission(String, String) |
古い.
指定した |
PrincipalPermission(String, String, Boolean) |
古い.
指定した |
メソッド
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) |
古い.
現在のアクセス許可と指定されたアクセス許可の和集合であるアクセス許可を作成します。 |
適用対象
こちらもご覧ください
.NET