PolicyStatement Class
Represents the statement of a CodeGroup describing the permissions and other information that apply to code with a particular set of evidence. This class cannot be inherited.
Assembly: mscorlib (in mscorlib.dll)
A PolicyStatement consists of a set of granted permissions, and possible special attributes for the code group.
Policy statements are typically used as the return value of a Resolve operation on a PolicyLevel.
The following code example shows the use of members of the PolicyStatement class
Imports System Imports System.Security Imports System.Security.Policy Imports System.Security.Principal Imports System.Security.Permissions Public Class Form1 Inherits System.Windows.Forms.Form ' Event handler for Run button. Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click tbxOutput.Cursor = Cursors.WaitCursor tbxOutput.Text = "" Dim policyStatement As PolicyStatement = firstConstructorTest() Dim policyStatement2 As PolicyStatement = secondConstructorTest() ' Add attributes to policy statement. policyStatement.Attributes = PolicyStatementAttribute.All Dim policyStatementCopy As PolicyStatement policyStatementCopy = createCopy(policyStatement) addXmlMember(policyStatementCopy) summarizePolicyStatment(policyStatement) ' Align interface and conclude application. tbxOutput.AppendText(vbCrLf + "This sample completed " + _ "successfully; press Exit to continue.") tbxOutput.Cursor = Cursors.Default End Sub ' Construct a PolicyStatement with an Unrestricted permission set. Private Function firstConstructorTest() As PolicyStatement ' Construct policy statement based on newly created permission set. ' Assemble permission set. Dim permissions As New PermissionSet(PermissionState.Unrestricted) permissions.AddPermission( _ New SecurityPermission(SecurityPermissionFlag.Execution)) permissions.AddPermission( _ New ZoneIdentityPermission(SecurityZone.MyComputer)) ' Instantiate a new policy statement with specified permission set. Dim policyStatement As New PolicyStatement(permissions) Return PolicyStatement End Function ' Construct a PolicyStatement with an Unrestricted permission set with ' the LevelFinal attribute. Private Function secondConstructorTest() As PolicyStatement ' Construct policy statement based on newly created permission set. ' Assemble permission set. Dim permissions As New PermissionSet(PermissionState.Unrestricted) permissions.AddPermission( _ New SecurityPermission(SecurityPermissionFlag.Execution)) permissions.AddPermission( _ New ZoneIdentityPermission(SecurityZone.MyComputer)) Dim levelFinalAttribute As PolicyStatementAttribute levelFinalAttribute = PolicyStatementAttribute.LevelFinal ' Instantiate a new policy statement with specified permission set ' and the LevelFinal attibute set allowing lower policy levels to be ' avoided in a resolve. Dim policyStatement As _ New PolicyStatement(permissions, levelFinalAttribute) Return policyStatement End Function ' Add named permission set to specified PolicyStatement. Private Sub AddPermissions(ByRef policyStatement As PolicyStatement) ' Set up a NamedPermissionSet with all permissions. Dim allPerms As New NamedPermissionSet("allPerms") allPerms.AddPermission( _ New SecurityPermission(SecurityPermissionFlag.Execution)) allPerms.AddPermission( _ New ZoneIdentityPermission(SecurityZone.MyComputer)) allPerms.AddPermission( _ New SiteIdentityPermission("www.contoso.com")) policyStatement.PermissionSet = allPerms End Sub ' If the class attribute is not found in specified PolicyStatement, ' add a child XML element with an added class attribute. Private Sub addXmlMember(ByRef policyStatement As PolicyStatement) Dim xmlElement As SecurityElement = policyStatement.ToXml() If (xmlElement.Attribute("class") Is Nothing) Then Dim newElement As New SecurityElement("PolicyStatement") newElement.AddAttribute("class", policyStatement.ToString()) newElement.AddAttribute("version", "1.1") newElement.AddChild(New SecurityElement("PermissionSet")) policyStatement.FromXml(newElement) tbxOutput.AppendText("Added the class attribute and modified the") tbxOutput.AppendText(" version number." + vbCrLf) tbxOutput.AppendText(newElement.ToString() + vbCrLf) End If End Sub ' Verify specified object is a PolicyStatement type. Retrieve a copy ' using the private getCopy method. Private Function createCopy( _ ByVal sourceObject As Object) As PolicyStatement Dim returnedStatement = New PolicyStatement(Nothing) ' Compare specified object's type with the PolicyStatement type. If (sourceObject.GetType() Is GetType(PolicyStatement)) Then returnedStatement = getCopy(CType(sourceObject, PolicyStatement)) Else Throw New ArgumentException("Excepted PolicyStatement type.") End If Return returnedStatement End Function ' Return a copy of the specified PolicyStatement if the result of the ' Copy command results in an equivalent object. Otherwise, return the ' original object. Private Function getCopy( _ ByVal policyStatement As PolicyStatement) As PolicyStatement ' Create an equivalent copy of the policy statement. Dim policyStatementCopy As PolicyStatement = policyStatement.Copy() ' Compare the specified objects for equality. If (Not policyStatementCopy.Equals(policyStatement)) Then Return policyStatementCopy Else Return policyStatement End If End Function ' Summarize the specified PolicyStatement to the console window. Private Sub summarizePolicyStatment( _ ByVal policyStatement As PolicyStatement) ' Retrieve the class path for policyStatement. Dim policyStatementClass As String = policyStatement.ToString() Dim hashCode As Integer = policyStatement.GetHashCode() Dim attributeString As String = "" ' Retrieve the string representation of the Policy's attributes. If (Not policyStatement.AttributeString Is Nothing) Then attributeString = policyStatement.AttributeString End If ' Write summary to console window. tbxOutput.AppendText("*** " + policyStatementClass + " summary ***") tbxOutput.AppendText(vbCrLf) tbxOutput.AppendText("PolicyStatement has been created with hash ") tbxOutput.AppendText("code(" + hashCode.ToString() + ") ") tbxOutput.AppendText("containing the following attributes: ") tbxOutput.AppendText(attributeString + 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 = "PolicyStatement" Me.Panel2.ResumeLayout(False) Me.Panel1.ResumeLayout(False) Me.ResumeLayout(False) End Sub #End Region End Class ' ' This sample produces the following output: ' ' Added the class attribute and modified the version number. ' <PolicyStatement class="System.Security.Policy.PolicyStatement" ' version="1.1"> ' <PermissionSet/> ' </PolicyStatement> ' ' *** System.Security.Policy.PolicyStatement summary *** ' PolicyStatement has been created with hash code(20) containing the following ' attributes: Exclusive LevelFinal ' ' This sample completed successfully; press Exit to continue
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.