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 ,可讓身為系統管理員的任何使用者通過要求。

注意

在 Windows Vista 中,使用者帳戶控制 (UAC) 會判斷使用者的權限。 如果您是內建 Administrators 群組的成員,系統會將兩個執行階段存取語彙基元 (Token) 指派給您:標準使用者存取語彙基元及管理員存取語彙基元。 根據預設,您會屬於標準使用者角色。 若要執行需要您是系統管理員的程式碼,您必須先將權限從標準使用者提高為系統管理員。 您可以在啟動應用程式時,以滑鼠右鍵按一下應用程式圖示,並指出您想要以系統管理員身分執行,藉此提高為系統管理員權限。

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

備註

藉由將身分識別資訊 (使用者名稱和角色) 傳遞至函式, PrincipalPermission 即可用來要求使用中主體的身分識別符合這項資訊。

若要比對作用 IPrincipal 中和相關聯的 IIdentity ,指定的身分識別和角色都必須相符。 如果 null 使用識別字串,則會將它視為要求以符合任何身分識別。 null角色字串的使用會符合任何角色。 藉由隱含 null 地傳遞或的參數,將會比對 name role PrincipalPermission 中的身分識別和角色 IPrincipal 。 您也可以建立 PrincipalPermission 只決定是否 IIdentity 代表已驗證或未驗證實體的。 在此情況下 namerole 會忽略和。

與大部分其他許可權不同的是,不 PrincipalPermission 會延伸 CodeAccessPermission 。 但是,它會執行 IPermission 介面。 這是因為不是 PrincipalPermission 程式碼存取權限,也就是不會根據執行中元件的身分識別來授與。 相反地,它可讓程式碼 Demand Union Intersect 針對目前的使用者身分識別,以一致的方式對目前的使用者身分識別執行動作 (、) 、等等。

重要

在要求主體許可權之前,必須先將目前應用程式域的主體原則設定為列舉值 WindowsPrincipal 。 依預設,主體原則設定為 UnauthenticatedPrincipal 。 如果您未將主體原則設定為 WindowsPrincipal ,則主體許可權的需求將會失敗。 在要求主體許可權之前,應執行下列程式碼:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

建構函式

PrincipalPermission(PermissionState)

使用指定的 PrincipalPermission 初始化 PermissionState 類別的新執行個體。

PrincipalPermission(String, String)

為指定的 namerole 初始化 PrincipalPermission 類別的新執行個體。

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)

建立目前權限與指定權限聯集的權限。

適用於

另請參閱