PermissionSetAttribute Sınıf

Tanım

Dikkat

Code Access Security is not supported or honored by the runtime.

Bildirim temelli güvenlik kullanılarak koda uygulanması için güvenlik PermissionSet eylemlerine izin verir. Bu sınıf devralınamaz.

public ref class PermissionSetAttribute sealed : System::Security::Permissions::CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
public sealed class PermissionSetAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
[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 PermissionSetAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
[System.Serializable]
public sealed class PermissionSetAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PermissionSetAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
type PermissionSetAttribute = class
    inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PermissionSetAttribute = class
    inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
[<System.Serializable>]
type PermissionSetAttribute = class
    inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Struct, AllowMultiple=true, Inherited=false)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PermissionSetAttribute = class
    inherit CodeAccessSecurityAttribute
Public NotInheritable Class PermissionSetAttribute
Inherits CodeAccessSecurityAttribute
Devralma
Öznitelikler

Örnekler

Aşağıdaki örnekte Sınıfın kullanımı gösterilmektedir PermissionSetAttribute .

// The #define statement for BuildFile must be included the first time this sample is run.  
// This causes the sample to create a file named 'LocalIntranet.xml' in the c:\temp folder.  
// After creating the LocalInternet.xml file, comment out the #define statement and rerun 
// the sample to demonstrate the use of the permission set attribute.
#define BuildFile
using System;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Collections;
using System.IO;

namespace PermissionSetAttributeDemo
{
    class Class1
    {		
        [STAThread]
        static void Main(string[] args)
        {
            // Run this sample with the BuildFile symbol defined to create the required file, then
            // comment out the #define statement to demonstrate the use of the attribute.
#if(BuildFile)
            using (StreamWriter sw = new StreamWriter("c:\\temp\\LocalIntranet.xml")) 
            {
                sw.WriteLine(GetNamedPermissionSet("LocalIntranet"));
                sw.Close();
            }
#endif
#if(!BuildFile)
            ReadFile1();
            ReadFile2();
            ReadFile3();
            Console.WriteLine("Press the Enter key to exit.");
            Console.Read();
#endif
        }
#if(!BuildFile)
        // Read the LocalIntranet.xml file.
        static void ReadFile1()
        {
            try
            {
                Console.WriteLine("Attempting to read a file using the FullTrust permission set.");
                using (StreamReader sr = new StreamReader("c:\\temp\\LocalIntranet.xml")) 
                {
                    string permissionSet = sr.ReadToEnd();
                    sr.Close();
                }
                Console.WriteLine("The file was successfully read.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        [PermissionSetAttribute(SecurityAction.PermitOnly, File = "c:\\temp\\LocalIntranet.xml")]
            // Read the file with the specified security action on the file path.
        static void ReadFile2()
        {
            try
            {
                Console.WriteLine("Attempting to read a file using the LocalIntranet permission set.");
                using (StreamReader sr = new StreamReader("c:\\temp\\LocalIntranet.xml")) 
                {
                    string permissionSet = sr.ReadToEnd();
                    sr.Close();
                }
                Console.WriteLine("The file was successfully read.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        [PermissionSetAttribute(SecurityAction.PermitOnly, Name = "LocalIntranet")]
            // Read the file with the specified security action on the permission set.
        static void ReadFile3()
        {
            try
            {
                Console.WriteLine("\nSecond attempt to read a file using " + 
                    "the LocalIntranet permission set.");
                using (StreamReader sr = new StreamReader("c:\\temp\\LocalIntranet.xml")) 
                {
                    string permissionSet = sr.ReadToEnd();
                    sr.Close();
                }
                Console.WriteLine("The file was successfully read.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
#endif
        // Locate the named permission set at the Machine level and return it as a string value.
        private static string GetNamedPermissionSet(string name)
        {
            IEnumerator policyEnumerator = SecurityManager.PolicyHierarchy();
            // Move through the policy levels to the Machine Level.
            while(policyEnumerator.MoveNext())
            {
                PolicyLevel currentLevel = (PolicyLevel)policyEnumerator.Current;
                if(currentLevel.Label == "Machine")
                {
                    // Iterate through the permission sets at the Machine level.
                    IList namedPermissions = currentLevel.NamedPermissionSets;
                    IEnumerator namedPermission = namedPermissions.GetEnumerator();
                    // Locate the named permission set.
                    while(namedPermission.MoveNext())
                    {
                        if(((NamedPermissionSet)namedPermission.Current).Name == name)
                        {
                            return ((NamedPermissionSet)namedPermission.Current).ToString();
                        }
                    }
                }
            }
            return null;
        }
    }
}
//
// This sample produces the following output:
//
// File created at c:\temp\LocalIntranet.xml
// Uncomment the BuildFile=false line and run the sample again.
//
// This sample completed successfully; press Exit to continue.
//
//
// The second time the sample is ran (without DEBUG flag):
//
// Attempting to read a file using the FullTrust permission set.
// The file was successfully read.
// Attempting to read a file using the LocalIntranet permission set.
// Request for the permission of type
// System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0,
// Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
//
// Second attempt to read a file using the LocalIntranet permission set.
// Request for the permission of type System.Security.Permissions.FileIOPermission,
// mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// failed.
// Press the Enter key to exit.
' The #Const BuildFile = True statement must be active the first time this
' sample is run. This causes the sample to create a file named
' 'LocalIntranet.xml' in the c:\temp folder. After creating the
' LocalInternet.xml file, comment out the #Const BUILDFILE = True statement,
' uncomment the #Const BUILDFILE = False statement, and rerun the sample to
' demonstrate the use of the permission set attribute.
Imports System.Security
Imports System.Security.Permissions
Imports System.Security.Policy
Imports System.Collections
Imports System.IO

#Const BUILDFILE = True
'#Const BUILDFILE = False

Public Class Form1
    Inherits System.Windows.Forms.Form

    ' Event handler for Run button.
    <STAThread()> _
        Private Sub Button1_Click( _
            ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Button1.Click

        tbxOutput.Cursor = Cursors.WaitCursor
        tbxOutput.Text = ""

        Dim xmlFilePath As String
        xmlFilePath = "c:\temp\LocalIntranet.xml"

        ' Run this sample with the BuildFile symbol defined to create the
        ' required file, then comment out the /define statement to demonstrate
        ' the use of the attribute.
#If (BUILDFILE) Then
        Dim sw As New StreamWriter(xmlFilePath)
        Try
            sw.WriteLine(GetNamedPermissionSet("LocalIntranet"))
            WriteLine("File created at " + xmlFilePath)
            WriteLine("Uncomment the BuildFile=false line and " + _
                "run the sample again.")
        Finally
            sw.Close()
        End Try
#End If

#If (Not BUILDFILE) Then
        ReadFile1()
        ReadFile2()
        ReadFile3()
#End If
        ' Align interface and conclude application.
        WriteLine(vbCrLf + "This sample completed successfully;" + _
            " press Exit to continue.")

        ' Reset the cursor.
        tbxOutput.Cursor = Cursors.Default
    End Sub

#If (Not BUILDFILE) Then
    ' Read the LocalIntranet.xml file.
    Private Sub ReadFile1()
        Try
            WriteLine("Attempting to read a file using the FullTrust " + _
                "permission set.")
            Dim sr As New StreamReader("c:\temp\LocalIntranet.xml")
            Try
                Dim permissionSet As String = sr.ReadToEnd()
            Finally
                sr.Close()
            End Try
            WriteLine("The file was successfully read.")
        Catch e As Exception
            WriteLine(e.Message)
        End Try
    End Sub

    <System.Security.Permissions.PermissionSetAttribute( _
        SecurityAction.PermitOnly, _
        File:="c:\temp\LocalIntranet.xml")> _
    Private Sub ReadFile2()
        ' Read the file with the specified security action on the file path.
        Try
            WriteLine("Attempting to read a file using the LocalIntranet " + _
                "permission set.")
            Dim sr As New StreamReader("c:\temp\LocalIntranet.xml")
            Try
                Dim permissionSet As String = sr.ReadToEnd()
            Finally
                sr.Close()
            End Try
            WriteLine("The file was successfully read.")
        Catch e As Exception
            WriteLine(e.Message)
        End Try
    End Sub

    <System.Security.Permissions.PermissionSetAttribute( _
        SecurityAction.PermitOnly, _
        Name:="LocalIntranet")> _
    Private Sub ReadFile3()
        ' Read the file with the specified security action on the
        ' permission set.
        Try
            WriteLine("Second attempt to read a file using the " + _
                "LocalIntranet permission set.")
            Dim sr As New StreamReader("c:\temp\LocalIntranet.xml")
            Try
                Dim permissionSet As String = sr.ReadToEnd()
            Finally
                sr.Close()
            End Try
            WriteLine("The file was successfully read.")
        Catch e As Exception
            WriteLine(e.Message)
        End Try
    End Sub
#End If

    ' Locate the named permission set at the Machine level and return it as
    ' a string value.
    Private Shared Function GetNamedPermissionSet( _
        ByVal name As String) As String

        Dim policyEnumerator As IEnumerator
        policyEnumerator = SecurityManager.PolicyHierarchy()

        ' Move through the policy levels to the Machine Level.
        While policyEnumerator.MoveNext()
            Dim currentLevel As PolicyLevel
            currentLevel = CType(policyEnumerator.Current, PolicyLevel)
            If currentLevel.Label = "Machine" Then
                ' Iterate through the permission sets at the Machine level.
                Dim namedPermissions As IList
                namedPermissions = currentLevel.NamedPermissionSets

                Dim namedPermission As IEnumerator
                namedPermission = namedPermissions.GetEnumerator()

                Dim currentPermission As NamedPermissionSet
                ' Locate the named permission set.
                While namedPermission.MoveNext()
                    currentPermission = CType( _
                        namedPermission.Current, _
                        NamedPermissionSet)

                    If currentPermission.Name.Equals(name) Then
                        Return currentPermission.ToString()
                    End If
                End While
            End If
        End While
        Return Nothing
    End Function

    ' Write specified message and carriage return to the output textbox.
    Private Sub WriteLine(ByVal message As String)
        tbxOutput.AppendText(message + vbCrLf)

    End Sub

    ' Event handler for Exit button.
    Private Sub Button2_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button2.Click

        Application.Exit()
    End Sub
#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents Panel2 As System.Windows.Forms.Panel
    Friend WithEvents Panel1 As System.Windows.Forms.Panel
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents Button2 As System.Windows.Forms.Button
    Friend WithEvents tbxOutput As System.Windows.Forms.RichTextBox
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.Panel2 = New System.Windows.Forms.Panel
        Me.Button1 = New System.Windows.Forms.Button
        Me.Button2 = New System.Windows.Forms.Button
        Me.Panel1 = New System.Windows.Forms.Panel
        Me.tbxOutput = New System.Windows.Forms.RichTextBox
        Me.Panel2.SuspendLayout()
        Me.Panel1.SuspendLayout()
        Me.SuspendLayout()
        '
        'Panel2
        '
        Me.Panel2.Controls.Add(Me.Button1)
        Me.Panel2.Controls.Add(Me.Button2)
        Me.Panel2.Dock = System.Windows.Forms.DockStyle.Bottom
        Me.Panel2.DockPadding.All = 20
        Me.Panel2.Location = New System.Drawing.Point(0, 320)
        Me.Panel2.Name = "Panel2"
        Me.Panel2.Size = New System.Drawing.Size(616, 64)
        Me.Panel2.TabIndex = 1
        '
        'Button1
        '
        Me.Button1.Dock = System.Windows.Forms.DockStyle.Right
        Me.Button1.Font = New System.Drawing.Font( _
            "Microsoft Sans Serif", _
            9.0!, _
            System.Drawing.FontStyle.Regular, _
            System.Drawing.GraphicsUnit.Point, _
            CType(0, Byte))
        Me.Button1.Location = New System.Drawing.Point(446, 20)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(75, 24)
        Me.Button1.TabIndex = 2
        Me.Button1.Text = "&Run"
        '
        'Button2
        '
        Me.Button2.Dock = System.Windows.Forms.DockStyle.Right
        Me.Button2.Font = New System.Drawing.Font( _
            "Microsoft Sans Serif", _
            9.0!, _
            System.Drawing.FontStyle.Regular, _
            System.Drawing.GraphicsUnit.Point, _
            CType(0, Byte))
        Me.Button2.Location = New System.Drawing.Point(521, 20)
        Me.Button2.Name = "Button2"
        Me.Button2.Size = New System.Drawing.Size(75, 24)
        Me.Button2.TabIndex = 3
        Me.Button2.Text = "E&xit"
        '
        'Panel1
        '
        Me.Panel1.Controls.Add(Me.tbxOutput)
        Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
        Me.Panel1.DockPadding.All = 20
        Me.Panel1.Location = New System.Drawing.Point(0, 0)
        Me.Panel1.Name = "Panel1"
        Me.Panel1.Size = New System.Drawing.Size(616, 320)
        Me.Panel1.TabIndex = 2
        '
        'tbxOutput
        '
        Me.tbxOutput.AccessibleDescription = _
            "Displays output from application."
        Me.tbxOutput.AccessibleName = "Output textbox."
        Me.tbxOutput.Dock = System.Windows.Forms.DockStyle.Fill
        Me.tbxOutput.Location = New System.Drawing.Point(20, 20)
        Me.tbxOutput.Name = "tbxOutput"
        Me.tbxOutput.Size = New System.Drawing.Size(576, 280)
        Me.tbxOutput.TabIndex = 1
        Me.tbxOutput.Text = "Click the Run button to run the application."
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15)
        Me.ClientSize = New System.Drawing.Size(616, 384)
        Me.Controls.Add(Me.Panel1)
        Me.Controls.Add(Me.Panel2)
        Me.Name = "Form1"
        Me.Text = "PermisstionSetAttribute"
        Me.Panel2.ResumeLayout(False)
        Me.Panel1.ResumeLayout(False)
        Me.ResumeLayout(False)

    End Sub

#End Region
End Class
'
' This sample produces the following output:
'
' File created at c:\temp\LocalIntranet.xml
' Uncomment the BuildFile=false line and run the sample again.
'
' This sample completed successfully; press Exit to continue.
'
'
' The second time the sample is ran (without DEBUG flag):
'
' Attempting to read a file using the FullTrust permission set.
' The file was successfully read.
' Attempting to read a file using the LocalIntranet permission set.
' Request for the permission of type
' System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0,
' Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
'
' Second attempt to read a file using the LocalIntranet permission set.
' Request for the permission of type System.Security.Permissions.FileIOPermission,
' mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
' failed.
' This sample completed successfully; press Exit to continue.

Açıklamalar

Önemli

Kısmen güvenilen kod artık desteklenmiyor. Bu özniteliğin .NET Core'da hiçbir etkisi yoktur.

PermissionSetAttribute, Fileve XML özellikleri Namebirbirini dışlar; başka bir deyişle, bir izin kümesinin kaynağı aşağıdakilerden yalnızca birine sahip olabilir: adlandırılmış izin kümesi, izin kümesinin XML gösterimini içeren bir dosya veya izin kümesinin XML gösterimini içeren bir dize.

İzin verilen bildirimin kapsamı kullanılana SecurityAction bağlıdır. SecurityAction üzerinde PermissionSet gerçekleştirilen, küme içindeki izinlerin her birinde bu eylemi gerçekleştirmenin eşdeğeridir.

Bir güvenlik özniteliği tarafından bildirilen güvenlik bilgileri, öznitelik hedefinin meta verilerinde depolanır ve sistem tarafından çalışma zamanında erişilir. Güvenlik öznitelikleri yalnızca bildirim temelli güvenlik için kullanılır. Kesinlik temelli güvenlik için ilgili izin sınıfını kullanın.

Oluşturucular

PermissionSetAttribute(SecurityAction)

Belirtilen güvenlik eylemiyle sınıfının yeni bir örneğini PermissionSetAttribute başlatır.

Özellikler

Action

Bir güvenlik eylemi alır veya ayarlar.

(Devralındığı yer: SecurityAttribute)
File

Bildirilecek özel izin kümesinin XML gösterimini içeren bir dosyayı alır veya ayarlar.

Hex

XML kodlanmış izin kümesinin onaltılık gösterimini alır veya ayarlar.

Name

İzin kümesinin adını alır veya ayarlar.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)
UnicodeEncoded

tarafından File belirtilen dosyanın Unicode mu yoksa ASCII kodlanmış mı olduğunu belirten bir değer alır veya ayarlar.

Unrestricted

Özniteliği tarafından korunan kaynağa yönelik tam (sınırsız) iznin bildirilip bildirilmediğini belirten bir değer alır veya ayarlar.

(Devralındığı yer: SecurityAttribute)
XML

İzin kümesinin XML gösterimini alır veya ayarlar.

Yöntemler

CreatePermission()

Bu yöntem kullanılmaz.

CreatePermissionSet()

Bu izin kümesi öznitelik nesnesini temel alan yeni bir izin kümesi oluşturur ve döndürür.

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ayrıca bkz.