PolicyStatementとは? わかりやすく解説

PolicyStatement クラス

CodeGroup のステートメント表し特定の証拠セットコード適用されるアクセス許可情報、およびその他の情報記述します。このクラス継承できません。

名前空間: System.Security.Policy
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class
 PolicyStatement
    Implements ISecurityEncodable, ISecurityPolicyEncodable
Dim instance As PolicyStatement
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class PolicyStatement : ISecurityEncodable,
 ISecurityPolicyEncodable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class PolicyStatement sealed : ISecurityEncodable,
 ISecurityPolicyEncodable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class PolicyStatement implements
 ISecurityEncodable, ISecurityPolicyEncodable
SerializableAttribute 
ComVisibleAttribute(true) 
public final class PolicyStatement implements
 ISecurityEncodable, ISecurityPolicyEncodable
解説解説
使用例使用例

PolicyStatement クラスメンバ使用する方法次のコード例示します

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
using System;
using System.Security;
using System.Security.Policy;
using System.Security.Principal;
using System.Security.Permissions;

class Members
{
    [STAThread]
    static void Main(string[]
 args)
    {
        // Create two new policy statements.
        PolicyStatement policyStatement = firstConstructorTest();
        PolicyStatement policyStatement2 = secondConstructorTest();

        // Add attributes to the first policy statement.
        policyStatement.Attributes = PolicyStatementAttribute.All;

        // Create a copy of the first policy statement.
        PolicyStatement policyStatementCopy = createCopy(policyStatement);
        addXmlMember(ref policyStatementCopy);

        summarizePolicyStatment(policyStatement);
        Console.WriteLine("This sample completed successfully; " +
            "press Enter to exit.");
        Console.ReadLine();
    }

    // Construct a PolicyStatement with an Unrestricted permission set.
    private static PolicyStatement firstConstructorTest()
 
    {
        // Construct the permission set.
        PermissionSet permissions 
            = new PermissionSet(PermissionState.Unrestricted);
        permissions.AddPermission(
            new SecurityPermission(SecurityPermissionFlag.Execution));
        permissions.AddPermission(
            new ZoneIdentityPermission(SecurityZone.MyComputer));

        // Create a policy statement based on the newly created permission
        // set.
        PolicyStatement policyStatement = new PolicyStatement(permissions);

        return policyStatement;
    }

    // Construct a PolicyStatement with an Unrestricted permission set
 and
    // the LevelFinal attribute.
    private static PolicyStatement secondConstructorTest()
    {
        // Construct the permission set.
        PermissionSet permissions =
            new PermissionSet(PermissionState.Unrestricted);
        permissions.AddPermission(
            new SecurityPermission(SecurityPermissionFlag.Execution));
        permissions.AddPermission(
            new ZoneIdentityPermission(SecurityZone.MyComputer));

        PolicyStatementAttribute levelFinalAttribute = 
            PolicyStatementAttribute.LevelFinal;
        
        // Create a new policy statement with the specified permission
 set.
        // The LevelFinal attribute is set to prevent the evaluation
 of lower
        // policy levels in a resolve operation.
        PolicyStatement policyStatement =
            new PolicyStatement(permissions, levelFinalAttribute);

        return policyStatement;
    }

    // Add a named permission set to the specified PolicyStatement.
    private static void
 AddPermissions(ref PolicyStatement policyStatement)
    {
        // Construct a NamedPermissionSet with basic permissions.
        NamedPermissionSet allPerms = 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;
    }

    // If a class attribute is not found in the specified PolicyStatement
,
    // add a child XML element with an added class attribute.
    private static void
 addXmlMember(ref PolicyStatement policyStatement) 
    {
        SecurityElement xmlElement = policyStatement.ToXml();
        if (xmlElement.Attribute("class")
 == null)
        {
            SecurityElement newElement = 
                new SecurityElement("PolicyStatement");
            newElement.AddAttribute("class", policyStatement.ToString());
            newElement.AddAttribute("version","1.1");

            newElement.AddChild(new SecurityElement("PermissionSet"));

            policyStatement.FromXml(newElement);

            Console.Write("Added the class attribute and
 modified its ");
            Console.WriteLine("version number.\n" + newElement.ToString());
        }
    }

    // Verify that the type of the specified object is a PolicyStatement
 type
    // then create a copy of the object.
    private static PolicyStatement createCopy(Object
 sourceObject)
    {
        PolicyStatement returnedStatement = new PolicyStatement(null);
        // Compare specified object type with the PolicyStatement type.
        if (sourceObject.GetType().Equals(typeof(PolicyStatement)))
        {
            returnedStatement = getCopy((PolicyStatement)sourceObject);
        }
        else
        {
            throw new ArgumentException("Expected the PolicyStatement
 type.");
        }

        return returnedStatement;
    }

    // Return a copy of the specified PolicyStatement if the result
 of the
    // Copy command is an equivalent object. Otherwise, return the
    // original PolicyStatement object.
    private static PolicyStatement getCopy(PolicyStatement
 policyStatement)
    {
        // Create an equivalent copy of the policy statement.
        PolicyStatement policyStatementCopy = policyStatement.Copy();

        // Compare the specified objects for equality.
        if (!policyStatementCopy.Equals(policyStatement))
        {
            return policyStatementCopy;
        } 
        else 
        {
            return policyStatement;
        }
    }

    // Summarize the attributes of the specified PolicyStatement on
 the
    // console window.
    private static void
 summarizePolicyStatment(
        PolicyStatement policyStatement)
    {
        // Retrieve the class path for policyStatement.
        string policyStatementClass = policyStatement.ToString();

        int hashCode = policyStatement.GetHashCode();

        string attributeString = "";
        // Retrieve the string representation of the PolicyStatement
        // attributes.
        if (policyStatement.AttributeString != null)
        {
            attributeString = policyStatement.AttributeString;
        }

        // Write a summary to the console window.
        Console.WriteLine("\n*** " + policyStatementClass + " summary
 ***");
        Console.Write("This PolicyStatement has been created with hash ");
        Console.Write("code(" + hashCode + ") ");

        Console.Write("and contains the following attributes: ");
        Console.WriteLine(attributeString);
    }
}
//
// 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 Enter to exit.
using namespace System;
using namespace System::Security;
using namespace System::Security::Policy;
using namespace System::Security::Principal;
using namespace System::Security::Permissions;

ref class Members
{
public:
   [STAThread]
   static void Main()
   {
      // Create two new policy statements.
      PolicyStatement^ policyStatement = firstConstructorTest();
      PolicyStatement^ policyStatement2 = secondConstructorTest();
      
      // Add attributes to the first policy statement.
      policyStatement->Attributes = PolicyStatementAttribute::All;

      // Create a copy of the first policy statement.
      PolicyStatement^ policyStatementCopy = createCopy( policyStatement );
      addXmlMember(  &policyStatementCopy );

      summarizePolicyStatment( policyStatement );
      Console::Write( L"This sample completed successfully; " );
      Console::WriteLine( L"press Enter to exit." );
      Console::ReadLine();
   }

private:
   // Construct a PolicyStatement with an Unrestricted permission set.
   static PolicyStatement^ firstConstructorTest()
   {
      // Construct the permission set.
      PermissionSet^ permissions = gcnew PermissionSet(
         PermissionState::Unrestricted );
      permissions->AddPermission( gcnew SecurityPermission(
         SecurityPermissionFlag::Execution ) );
      permissions->AddPermission( gcnew ZoneIdentityPermission(
         SecurityZone::MyComputer ) );
      
      // Create a policy statement based on the newly created permission
      // set.
      PolicyStatement^ policyStatement = gcnew PolicyStatement(
         permissions );

      return policyStatement;
   }

   // Construct a PolicyStatement with an Unrestricted permission set
 and
   // the LevelFinal attribute.
   static PolicyStatement^ secondConstructorTest()
   {
      // Construct the permission set.
      PermissionSet^ permissions = gcnew PermissionSet(
         PermissionState::Unrestricted );
      permissions->AddPermission( gcnew SecurityPermission(
         SecurityPermissionFlag::Execution ) );
      permissions->AddPermission( gcnew ZoneIdentityPermission(
         SecurityZone::MyComputer ) );

      PolicyStatementAttribute levelFinalAttribute =
         PolicyStatementAttribute::LevelFinal;
      
      // Create a new policy statement with the specified permission
 set.
      // The LevelFinal attribute is set to prevent the evaluation of
 lower
      // policy levels in a resolve operation.
      PolicyStatement^ policyStatement = gcnew PolicyStatement(
         permissions,levelFinalAttribute );

      return policyStatement;
   }

   // Add a named permission set to the specified PolicyStatement.
   static void AddPermissions( interior_ptr<PolicyStatement^>policyStatement
 )
   {
      // Construct a NamedPermissionSet with basic permissions.
      NamedPermissionSet^ allPerms = gcnew NamedPermissionSet(
         L"allPerms" );
      allPerms->AddPermission( gcnew SecurityPermission(
         SecurityPermissionFlag::Execution ) );
      allPerms->AddPermission( gcnew ZoneIdentityPermission(
         SecurityZone::MyComputer ) );
      allPerms->AddPermission( gcnew SiteIdentityPermission(
         L"www.contoso.com" ) );

      ( *policyStatement)->PermissionSet = allPerms;
   }

   // If a class attribute is not found in the specified PolicyStatement
,
   // add a child XML element with an added class attribute.
   static void addXmlMember( interior_ptr<PolicyStatement^>policyStatement
 )
   {
      SecurityElement^ xmlElement = ( *policyStatement)->ToXml();
      if ( xmlElement->Attribute(L"class")
 == nullptr )
      {
         SecurityElement^ newElement = gcnew SecurityElement(
            L"PolicyStatement" );
         newElement->AddAttribute( L"class", (
            *policyStatement)->ToString() );
         newElement->AddAttribute( L"version", L"1.1" );

         newElement->AddChild( gcnew SecurityElement( L"PermissionSet"
 ) );

         ( *policyStatement)->FromXml( newElement );

         Console::Write( L"Added the class attribute and
 modified its " );
         Console::WriteLine( L"version number.\n{0}", newElement );
      }
   }

   // Verify that the type of the specified object is a PolicyStatement
 type
   // then create a copy of the object.
   static PolicyStatement^ createCopy( Object^ sourceObject )
   {
      PolicyStatement^ returnedStatement = gcnew PolicyStatement( nullptr );
      // Compare specified object type with the PolicyStatement type.
      if ( sourceObject->GetType()->Equals( PolicyStatement::typeid
 ) )
      {
         returnedStatement = getCopy(
            static_cast<PolicyStatement^>(sourceObject) );
      }
      else
      {
         throw gcnew ArgumentException(
            L"Expected the PolicyStatement type." );
      }

      return returnedStatement;
   }

   // Return a copy of the specified PolicyStatement if the result of
 the
   // Copy command is an equivalent object. Otherwise, return the
   // original PolicyStatement object.
   static PolicyStatement^ getCopy( PolicyStatement^ policyStatement
 )
   {
      // Create an equivalent copy of the policy statement.
      PolicyStatement^ policyStatementCopy = policyStatement->Copy();

      // Compare the specified objects for equality.
      if (  !policyStatementCopy->Equals( policyStatement )
 )
      {
         return policyStatementCopy;
      }
      else
      {
         return policyStatement;
      }
   }

   // Summarize the attributes of the specified PolicyStatement on the
   // console window.
   static void summarizePolicyStatment( PolicyStatement^
 policyStatement )
   {
      // Retrieve the class path for policyStatement.
      String^ policyStatementClass = policyStatement->ToString();

      int hashCode = policyStatement->GetHashCode();

      String^ attributeString = L"";
      
      // Retrieve the string representation of the PolicyStatement
      // attributes.
      if ( policyStatement->AttributeString != nullptr )
      {
         attributeString = policyStatement->AttributeString;
      }

      // Write a summary to the console window.
      Console::WriteLine( L"\n*** {0} summary ***", policyStatementClass
 );
      Console::Write( L"This PolicyStatement has been created with hash "
 );
      Console::Write( L"code({0}) ", hashCode );

      Console::Write( L"and contains the following attributes: " );
      Console::WriteLine( attributeString );
   }
};

int main()
{
   Members::Main();
}

//
// 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 Enter to exit.
import System.*;
import System.Security.*;
import System.Security.Policy.*;
import System.Security.Principal.*;
import System.Security.Permissions.*;

class Members
{
    /** @attribute STAThread()
     */
    public static void main(String[]
 args)
    {
        // Create two new policy statements.
        PolicyStatement policyStatement = FirstConstructorTest();
        PolicyStatement policyStatement2 = SecondConstructorTest();
        // Add attributes to the first policy statement.
        policyStatement.set_Attributes(PolicyStatementAttribute.All);
        // Create a copy of the first policy statement.
        PolicyStatement policyStatementCopy = CreateCopy(policyStatement);
        AddXmlMember(policyStatementCopy);

        summarizePolicyStatment(policyStatement);
        Console.WriteLine("This sample completed successfully; " 
            + "press Enter to exit.");
        Console.ReadLine();
    } //main

    // Construct a PolicyStatement with an Unrestricted permission set.
    private static PolicyStatement FirstConstructorTest()
    {
        // Construct the permission set.
        PermissionSet permissions = new PermissionSet(PermissionState.
            Unrestricted);
        permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.
            Execution));
        permissions.AddPermission(new ZoneIdentityPermission(SecurityZone.
            MyComputer));
        // Create a policy statement based on the newly created permission
        // set.
        PolicyStatement policyStatement = new PolicyStatement(permissions);
        return policyStatement;
    } //FirstConstructorTest

    // Construct a PolicyStatement with an Unrestricted permission set
 and
    // the LevelFinal attribute.
    private static PolicyStatement SecondConstructorTest()
    {
        // Construct the permission set.
        PermissionSet permissions = new PermissionSet(PermissionState.
            Unrestricted);
        permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.
            Execution));
        permissions.AddPermission(new ZoneIdentityPermission(SecurityZone.
            MyComputer));
        PolicyStatementAttribute levelFinalAttribute = PolicyStatementAttribute.
            LevelFinal;
        // Create a new policy statement with the specified permission
 set.
        // The LevelFinal attribute is set to prevent the evaluation
 of lower
        // policy levels in a resolve operation.
        PolicyStatement policyStatement = new PolicyStatement(permissions
,
            levelFinalAttribute);
        return policyStatement;
    } //SecondConstructorTest

    // Add a named permission set to the specified PolicyStatement.
    private static void
 AddPermissions(PolicyStatement policyStatement)
    {
        // Construct a NamedPermissionSet with basic permissions.
        NamedPermissionSet allPerms = new NamedPermissionSet("allPerms");
        allPerms.AddPermission(new SecurityPermission(SecurityPermissionFlag.
            Execution));
        allPerms.AddPermission(new ZoneIdentityPermission(SecurityZone.
            MyComputer));
        allPerms.AddPermission(new SiteIdentityPermission("www.contoso.com"));
        policyStatement.set_PermissionSet(allPerms);
    } //AddPermissions

    // If a class attribute is not found in the specified PolicyStatement
,
    // add a child XML element with an added class attribute.
    private static void
 AddXmlMember(PolicyStatement policyStatement)
    {
        SecurityElement xmlElement = policyStatement.ToXml();
        if (xmlElement.Attribute("class")
 == null) {
            SecurityElement newElement = new SecurityElement("PolicyStatement");
            newElement.AddAttribute("class", policyStatement.ToString());
            newElement.AddAttribute("version", "1.1");
            newElement.AddChild(new SecurityElement("PermissionSet"));
            policyStatement.FromXml(newElement);

            Console.Write("Added the class attribute and
 modified its ");
            Console.WriteLine("version number.\n" + newElement.ToString());
        }
    } //AddXmlMember

    // Verify that the type of the specified object is a PolicyStatement
 type
    // then create a copy of the object.
    private static PolicyStatement CreateCopy(Object
 sourceObject)
    {
        PolicyStatement returnedStatement = new PolicyStatement(null);
        // Compare specified object type with the PolicyStatement type.
        if (sourceObject.GetType().Equals(PolicyStatement.class.ToType()))
 {
            returnedStatement = GetCopy(((PolicyStatement)(sourceObject)));
        }
        else {
            throw new ArgumentException("Expected the PolicyStatement
 type.");
        }
        return returnedStatement;
    } //CreateCopy

    // Return a copy of the specified PolicyStatement if the result
 of the
    // Copy command is an equivalent object. Otherwise, return the
    // original PolicyStatement object.
    private static PolicyStatement GetCopy(PolicyStatement
 policyStatement)
    {
        // Create an equivalent copy of the policy statement.
        PolicyStatement policyStatementCopy = policyStatement.Copy();
        // Compare the specified objects for equality.
        if (!(policyStatementCopy.Equals(policyStatement))) {
            return policyStatementCopy;
        }
        else {
            return policyStatement;
        }
    } //GetCopy

    // Summarize the attributes of the specified PolicyStatement on
 the
    // console window.
    private static void
 summarizePolicyStatment(PolicyStatement policyStatement)
    {
        // Retrieve the class path for policyStatement.
        String policyStatementClass = policyStatement.ToString();
        int hashCode = policyStatement.GetHashCode();
        String attributeString = "";
        // Retrieve the string representation of the PolicyStatement
        // attributes.
        if (policyStatement.get_AttributeString() != null)
 {
            attributeString = policyStatement.get_AttributeString();
        }
        // Write a summary to the console window.
        Console.WriteLine("\n*** " + policyStatementClass + " summary
 ***");
        Console.Write("This PolicyStatement has been created with hash ");
        Console.Write("code(" + hashCode + ") ");
        Console.Write("and contains the following attributes: ");
        Console.WriteLine(attributeString);
    } //summarizePolicyStatment
} //Members
//
// 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 Enter to exit.
継承階層継承階層
System.Object
  System.Security.Policy.PolicyStatement
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PolicyStatement メンバ
System.Security.Policy 名前空間

PolicyStatement コンストラクタ (PermissionSet, PolicyStatementAttribute)

PermissionSet属性指定して、PolicyStatement クラス新しインスタンス初期化します。

名前空間: System.Security.Policy
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    permSet As PermissionSet, _
    attributes As PolicyStatementAttribute _
)
Dim permSet As PermissionSet
Dim attributes As PolicyStatementAttribute

Dim instance As New PolicyStatement(permSet,
 attributes)
public PolicyStatement (
    PermissionSet permSet,
    PolicyStatementAttribute attributes
)
public:
PolicyStatement (
    PermissionSet^ permSet, 
    PolicyStatementAttribute attributes
)
public PolicyStatement (
    PermissionSet permSet, 
    PolicyStatementAttribute attributes
)
public function PolicyStatement (
    permSet : PermissionSet, 
    attributes : PolicyStatementAttribute
)

パラメータ

permSet

新しインスタンス初期化するために使用する PermissionSet。

attributes

PolicyStatementAttribute 値のビットごとの組み合わせ

使用例使用例

PolicyStatement コンストラクタ使用する方法次のコード例示します。このコード例は、PolicyStatement クラストピック取り上げているコード例一部分です。

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)
PermissionSet permissions =
    new PermissionSet(PermissionState.Unrestricted);
permissions.AddPermission(
    new SecurityPermission(SecurityPermissionFlag.Execution));
permissions.AddPermission(
    new ZoneIdentityPermission(SecurityZone.MyComputer));

PolicyStatementAttribute levelFinalAttribute = 
    PolicyStatementAttribute.LevelFinal;

// Create a new policy statement with the specified permission set.
// The LevelFinal attribute is set to prevent the evaluation of lower
// policy levels in a resolve operation.
PolicyStatement policyStatement =
    new PolicyStatement(permissions, levelFinalAttribute);
PermissionSet^ permissions = gcnew PermissionSet(
   PermissionState::Unrestricted );
permissions->AddPermission( gcnew SecurityPermission(
   SecurityPermissionFlag::Execution ) );
permissions->AddPermission( gcnew ZoneIdentityPermission(
   SecurityZone::MyComputer ) );

PolicyStatementAttribute levelFinalAttribute =
   PolicyStatementAttribute::LevelFinal;

// Create a new policy statement with the specified permission set.
// The LevelFinal attribute is set to prevent the evaluation of lower
// policy levels in a resolve operation.
PolicyStatement^ policyStatement = gcnew PolicyStatement(
   permissions,levelFinalAttribute );
PermissionSet permissions = new PermissionSet(PermissionState.
    Unrestricted);
permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.
    Execution));
permissions.AddPermission(new ZoneIdentityPermission(SecurityZone.
    MyComputer));
PolicyStatementAttribute levelFinalAttribute = PolicyStatementAttribute.
    LevelFinal;
// Create a new policy statement with the specified permission set.
// The LevelFinal attribute is set to prevent the evaluation of lower
// policy levels in a resolve operation.
PolicyStatement policyStatement = new PolicyStatement(permissions
,
    levelFinalAttribute);
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PolicyStatement クラス
PolicyStatement メンバ
System.Security.Policy 名前空間

PolicyStatement コンストラクタ (PermissionSet)

PermissionSet指定して、PolicyStatement クラス新しインスタンス初期化します。

名前空間: System.Security.Policy
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    permSet As PermissionSet _
)
Dim permSet As PermissionSet

Dim instance As New PolicyStatement(permSet)
public PolicyStatement (
    PermissionSet permSet
)
public:
PolicyStatement (
    PermissionSet^ permSet
)
public PolicyStatement (
    PermissionSet permSet
)
public function PolicyStatement (
    permSet : PermissionSet
)

パラメータ

permSet

新しインスタンス初期化するために使用する PermissionSet。

使用例使用例

PolicyStatement コンストラクタ使用する方法次のコード例示します。このコード例は、PolicyStatement クラストピック取り上げているコード例一部分です。

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)
PermissionSet permissions 
    = new PermissionSet(PermissionState.Unrestricted);
permissions.AddPermission(
    new SecurityPermission(SecurityPermissionFlag.Execution));
permissions.AddPermission(
    new ZoneIdentityPermission(SecurityZone.MyComputer));

// Create a policy statement based on the newly created permission
// set.
PolicyStatement policyStatement = new PolicyStatement(permissions);
PermissionSet^ permissions = gcnew PermissionSet(
   PermissionState::Unrestricted );
permissions->AddPermission( gcnew SecurityPermission(
   SecurityPermissionFlag::Execution ) );
permissions->AddPermission( gcnew ZoneIdentityPermission(
   SecurityZone::MyComputer ) );

// Create a policy statement based on the newly created permission
// set.
PolicyStatement^ policyStatement = gcnew PolicyStatement(
   permissions );
PermissionSet permissions = new PermissionSet(PermissionState.
    Unrestricted);
permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.
    Execution));
permissions.AddPermission(new ZoneIdentityPermission(SecurityZone.
    MyComputer));
// Create a policy statement based on the newly created permission
// set.
PolicyStatement policyStatement = new PolicyStatement(permissions);
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PolicyStatement クラス
PolicyStatement メンバ
System.Security.Policy 名前空間

PolicyStatement コンストラクタ

PolicyStatement クラス新しインスタンス初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
PolicyStatement (PermissionSet) PermissionSet を指定してPolicyStatement クラス新しインスタンス初期化します。
PolicyStatement (PermissionSet, PolicyStatementAttribute) PermissionSet属性指定してPolicyStatement クラス新しインスタンス初期化します。
参照参照

関連項目

PolicyStatement クラス
PolicyStatement メンバ
System.Security.Policy 名前空間

PolicyStatement プロパティ


PolicyStatement メソッド


PolicyStatement メンバ

CodeGroup のステートメント表し特定の証拠セットコード適用されるアクセス許可情報、およびその他の情報記述します。このクラス継承できません。

PolicyStatement データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
参照参照

関連項目

PolicyStatement クラス
System.Security.Policy 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「PolicyStatement」の関連用語

PolicyStatementのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



PolicyStatementのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS