PermissionSetAttribute クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ <AttributeUsageAttribute(AttributeTargets.Assembly Or AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Constructor Or AttributeTargets.Method, AllowMultiple:=True, Inherited:=False)> _ <ComVisibleAttribute(True)> _ Public NotInheritable Class PermissionSetAttribute Inherits CodeAccessSecurityAttribute
[SerializableAttribute] [AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Constructor|AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [ComVisibleAttribute(true)] public sealed class PermissionSetAttribute : CodeAccessSecurityAttribute
[SerializableAttribute] [AttributeUsageAttribute(AttributeTargets::Assembly|AttributeTargets::Class|AttributeTargets::Struct|AttributeTargets::Constructor|AttributeTargets::Method, AllowMultiple=true, Inherited=false)] [ComVisibleAttribute(true)] public ref class PermissionSetAttribute sealed : public CodeAccessSecurityAttribute
/** @attribute SerializableAttribute() */ /** @attribute AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Constructor|AttributeTargets.Method, AllowMultiple=true, Inherited=false) */ /** @attribute ComVisibleAttribute(true) */ public final class PermissionSetAttribute extends CodeAccessSecurityAttribute
SerializableAttribute AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Constructor|AttributeTargets.Method, AllowMultiple=true, Inherited=false) ComVisibleAttribute(true) public final class PermissionSetAttribute extends CodeAccessSecurityAttribute

PermissionSetAttribute プロパティの Name、File、および XML は、同時には指定できません。つまりアクセス許可セットは、名前付きアクセス許可セット、アクセス許可セットの XML 表現を格納するファイル、アクセス許可セットの XML 表現を格納する文字列の、いずれか 1 つだけをソースにすることができます。
宣言の許容スコープは、使用する SecurityAction によって異なります。PermissionSet で実行する SecurityAction は、セット内の各アクセス許可でその操作を実行する場合と等価です。
セキュリティ属性によって宣言されたセキュリティ情報は、属性ターゲットのメタデータに格納され、実行時にシステムによってアクセスされます。セキュリティ属性は宣言セキュリティにだけ使用されます。強制セキュリティの場合は、対応するアクセス許可クラスを使用します。

PermissionSetAttribute クラスを使用する例を次に示します。
' 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 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 'ReadFile1 <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 'ReadFile2 <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 'ReadFile3 #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.
// 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.

System.Attribute
System.Security.Permissions.SecurityAttribute
System.Security.Permissions.CodeAccessSecurityAttribute
System.Security.Permissions.PermissionSetAttribute


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PermissionSetAttribute コンストラクタ
アセンブリ: mscorlib (mscorlib.dll 内)


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PermissionSetAttribute プロパティ

名前 | 説明 | |
---|---|---|
![]() | Action | セキュリティ アクションを取得または設定します。 ( SecurityAttribute から継承されます。) |
![]() | File | 宣言するカスタム アクセス許可の XML 表現を格納したファイルを取得または設定します。 |
![]() | Hex | XML エンコード済みのアクセス許可セットの 16 進数表現を取得または設定します。 |
![]() | Name | アクセス許可セットの名前を取得または設定します。 |
![]() | TypeId | 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。 ( Attribute から継承されます。) |
![]() | UnicodeEncoded | File で指定したファイルが Unicode または ASCII のどちらでエンコードされるかを示す値を取得または設定します。 |
![]() | Unrestricted | 属性によって保護されているリソースに対して完全な (無制限の) アクセス許可が宣言されているかどうかを示す値を取得または設定します。 ( SecurityAttribute から継承されます。) |
![]() | XML | アクセス許可セットの XML 表現を取得または設定します。 |

PermissionSetAttribute メソッド

名前 | 説明 | |
---|---|---|
![]() | CreatePermission | オーバーライドされます。 新しい IPermission を作成して返します。 |
![]() | CreatePermissionSet | 新しい PermissionSet を作成して返します。 |
![]() | Equals | オーバーロードされます。 ( Attribute から継承されます。) |
![]() | GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 ( Attribute から継承されます。) |
![]() | GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 ( Attribute から継承されます。) |
![]() | GetHashCode | このインスタンスのハッシュ コードを返します。 ( Attribute から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | IsDefaultAttribute | 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 ( Attribute から継承されます。) |
![]() | IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 ( Attribute から継承されます。) |
![]() | Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 ( Attribute から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

PermissionSetAttribute メンバ
宣言セキュリティを使用して、PermissionSet のセキュリティ アクションをコードに適用できるようにします。このクラスは継承できません。
PermissionSetAttribute データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Action | セキュリティ アクションを取得または設定します。(SecurityAttribute から継承されます。) |
![]() | File | 宣言するカスタム アクセス許可の XML 表現を格納したファイルを取得または設定します。 |
![]() | Hex | XML エンコード済みのアクセス許可セットの 16 進数表現を取得または設定します。 |
![]() | Name | アクセス許可セットの名前を取得または設定します。 |
![]() | TypeId | 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。(Attribute から継承されます。) |
![]() | UnicodeEncoded | File で指定したファイルが Unicode または ASCII のどちらでエンコードされるかを示す値を取得または設定します。 |
![]() | Unrestricted | 属性によって保護されているリソースに対して完全な (無制限の) アクセス許可が宣言されているかどうかを示す値を取得または設定します。(SecurityAttribute から継承されます。) |
![]() | XML | アクセス許可セットの XML 表現を取得または設定します。 |

名前 | 説明 | |
---|---|---|
![]() | CreatePermission | オーバーライドされます。 新しい IPermission を作成して返します。 |
![]() | CreatePermissionSet | 新しい PermissionSet を作成して返します。 |
![]() | Equals | オーバーロードされます。 ( Attribute から継承されます。) |
![]() | GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 (Attribute から継承されます。) |
![]() | GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 (Attribute から継承されます。) |
![]() | GetHashCode | このインスタンスのハッシュ コードを返します。 (Attribute から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | IsDefaultAttribute | 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 (Attribute から継承されます。) |
![]() | IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 (Attribute から継承されます。) |
![]() | Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

- PermissionSetAttributeのページへのリンク