다음을 통해 공유


PrincipalPermissionAttribute(SecurityAction) 생성자

정의

주의

PrincipalPermissionAttribute is not honored by the runtime and must not be used.

지정된 PrincipalPermissionAttribute를 사용하여 SecurityAction 클래스의 새 인스턴스를 초기화합니다.

public:
 PrincipalPermissionAttribute(System::Security::Permissions::SecurityAction action);
[System.Obsolete("PrincipalPermissionAttribute is not honored by the runtime and must not be used.", true, DiagnosticId="SYSLIB0002", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public PrincipalPermissionAttribute (System.Security.Permissions.SecurityAction action);
public PrincipalPermissionAttribute (System.Security.Permissions.SecurityAction action);
[<System.Obsolete("PrincipalPermissionAttribute is not honored by the runtime and must not be used.", true, DiagnosticId="SYSLIB0002", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Security.Permissions.PrincipalPermissionAttribute : System.Security.Permissions.SecurityAction -> System.Security.Permissions.PrincipalPermissionAttribute
new System.Security.Permissions.PrincipalPermissionAttribute : System.Security.Permissions.SecurityAction -> System.Security.Permissions.PrincipalPermissionAttribute
Public Sub New (action As SecurityAction)

매개 변수

action
SecurityAction

SecurityAction 값 중 하나입니다.

특성

예제

다음 예제에서는 현재 사용자를 관리자로 요구 하는 생성자를 사용 PrincipalPermissionAttribute 하는 방법을 보여 줍니다.

참고

Windows Vista에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 관리자 권한이 필요한 코드를 실행하려면 먼저 표준 사용자에서 관리자로 권한을 높여야 합니다. 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자로 실행하도록 지정하여 애플리케이션을 시작하면 이 작업을 수행할 수 있습니다.

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

[PrincipalPermission(SecurityAction::Demand, Role = "Administrators")]
void CheckAdministrator()
{
    Console::WriteLine("User is an administrator.");
}
int main(array<System::String ^> ^args)
{
    try
    {
        // Must set PrincipalPolicy to WindowsPrincipal
        AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
        // Check using declarative security.
        CheckAdministrator();
        // Check using Imperative security.
        System::String^ null;
        PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
        principalPerm->Demand();
        Console::WriteLine("Demand succeeded");
    }
    catch (Exception ^e)
    {
        Console::WriteLine(e->Message);
    }
    return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{
    public static void Main()
    {
        try
        {
            // PrincipalPolicy must be set to WindowsPrincipal to check roles.
            AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            // Check using the PrincipalPermissionAttribute
            CheckAdministrator();
            // Check using PrincipalPermission class.
            PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
            principalPerm.Demand();
            Console.WriteLine("Demand succeeded.");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
    [PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
    static void CheckAdministrator()
    {
        Console.WriteLine("User is an administrator");
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal



Class SecurityPrincipalDemo

    Public Shared Sub Main()
        Try
            ' PrincipalPolicy must be set to WindowsPrincipal to check roles.
            AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
            ' Check using the PrincipalPermissionAttribute
            CheckAdministrator()
            ' Check using PrincipalPermission class.
            Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
            principalPerm.Demand()
            Console.WriteLine("Demand succeeded.")
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

    <PrincipalPermission(SecurityAction.Demand, Role:="Administrators")> _
    Shared Sub CheckAdministrator()
        Console.WriteLine("User is an administrator")

    End Sub
End Class

설명

Demand, InheritanceDemandLinkDemand 는 이 특성에 대한 의미가 있는 의 SecurityAction 유일한 값입니다. 코드 액세스 권한이 아닌 권한에는 다른 작업이 적용되지 않습니다.

적용 대상