FileIOPermissionAttribute(SecurityAction) Constructor

Definition

Initializes a new instance of the FileIOPermissionAttribute class with the specified SecurityAction.

public:
 FileIOPermissionAttribute(System::Security::Permissions::SecurityAction action);
public FileIOPermissionAttribute (System.Security.Permissions.SecurityAction action);
new System.Security.Permissions.FileIOPermissionAttribute : System.Security.Permissions.SecurityAction -> System.Security.Permissions.FileIOPermissionAttribute
Public Sub New (action As SecurityAction)

Parameters

action
SecurityAction

One of the SecurityAction values.

Exceptions

The action parameter is not a valid SecurityAction.

Examples

The following code example creates several instances of the FileIOPermissionAttribute class to set varying levels of file I/O permissions.

// This sample demonstrates the use of the FileIOPermissionAttribute class.
// The sample follows the recommended procedure of first granting PermitOnly permissions, 
// then using a Deny on that set of granted permissions.  
using namespace System;
using namespace System::Reflection;
using namespace System::Security::Permissions;
using namespace System::Security;
using namespace System::IO;
void PermitOnlyMethod();
void PermitOnlyTestMethod();
void TestFailed();


// This method demonstrates the use of the FileIOPermissionAttribute to create a PermitOnly permission.
// Set the Read property.
[FileIOPermissionAttribute(SecurityAction::PermitOnly,Read="C:\\")]
// Set the PathDiscovery property.
[FileIOPermissionAttribute(SecurityAction::PermitOnly,
PathDiscovery="C:\\Documents and Settings\\All Users")]
// Set the Append property.
[FileIOPermissionAttribute(SecurityAction::PermitOnly,
Append="C:\\Documents and Settings\\All Users\\Application Data")]
// Set the Write property.
[FileIOPermissionAttribute(SecurityAction::PermitOnly,
Write="C:\\Documents and Settings\\All Users\\Application Data\\Microsoft")]
// Set the All property.
[FileIOPermissionAttribute(SecurityAction::PermitOnly,
All="C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network")]

void PermitOnlyMethod()
{
   Console::WriteLine( "Executing PermitOnlyMethod." );
   Console::WriteLine( "PermitOnly the Read permission for drive C." );
   Console::WriteLine( "PermitOnly the PathDiscovery permission for \n\tC:\\Documents and Settings\\All Users." );
   Console::WriteLine( "PermitOnly the Append permission for \n\tC:\\Documents and Settings\\All Users\\Application Data." );
   Console::WriteLine( "PermitOnly the Write permission for  \n\tC:\\Documents and Settings\\All Users\\Application Data\\Microsoft." );
   Console::WriteLine( "PermitOnly the All permission for \n\tC:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network." );
   PermitOnlyTestMethod();
}

void PermitOnlyTestMethod()
{
    Console::WriteLine("Executing PermitOnlyTestMethod.");
    try
    {
        PermissionSet^ ps = gcnew PermissionSet(PermissionState::None);
        ps->AddPermission(gcnew FileIOPermission(FileIOPermissionAccess::Write,
            "C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network\\SomeFile"));
        Console::WriteLine("Demanding permission to write " +
            "'C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network\\SomeFile'");
        ps->Demand();
        Console::WriteLine("Demand succeeded.");
        ps->AddPermission(
            gcnew FileIOPermission(FileIOPermissionAccess::Write,
            "C:\\"));
        Console::WriteLine("Demanding permission to write to drive C.");

        // This demand should cause an exception.
        ps->Demand();
        // The TestFailed method is called if an exception is not thrown.
        TestFailed();
     }
    catch (Exception^ e)
    {
        Console::WriteLine("An exception was thrown because of a write demand: " + e->Message);
    }
}

void TestFailed()
{
   Console::WriteLine( "Executing TestFailed." );
   Console::WriteLine( "Throwing an exception." );
   throw gcnew Exception;
}

int main()
{
   try
   {
      PermitOnlyMethod();
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e->Message );
   }
}
// This sample demonstrates the use of the FileIOPermissionAttribute class.
// The sample follows the recommended procedure of first granting PermitOnly permissions,
// then using a Deny on that set of granted permissions.

using System;
using System.Reflection;
using System.Security.Permissions;
using System.Security;
using System.IO;

class MyClass
{

    // This method demonstrates the use of the FileIOPermissionAttribute to create a PermitOnly permission.
    // Set the Read property.
    [FileIOPermissionAttribute(SecurityAction.PermitOnly, Read = "C:\\")]
    // Set the PathDiscovery property.
    [FileIOPermissionAttribute(SecurityAction.PermitOnly,
         PathDiscovery = "C:\\Documents and Settings\\All Users")]
    // Set the Append property.
    [FileIOPermissionAttribute(SecurityAction.PermitOnly,
         Append = "C:\\Documents and Settings\\All Users\\Application Data")]
    // Set the Write property.
    [FileIOPermissionAttribute(SecurityAction.PermitOnly,
         Write = "C:\\Documents and Settings\\All Users\\Application Data\\Microsoft")]
    // Set the All property.
    [FileIOPermissionAttribute(SecurityAction.PermitOnly,
         All = "C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network")]
    public static void PermitOnlyMethod()
    {
        Console.WriteLine("Executing PermitOnlyMethod.");
        Console.WriteLine("PermitOnly the Read permission for drive C.");
        Console.WriteLine("PermitOnly the PathDiscovery permission for \n\tC:\\Documents and Settings\\All Users.");
        Console.WriteLine("PermitOnly the Append permission for \n\tC:\\Documents and Settings\\All Users\\Application Data.");
        Console.WriteLine("PermitOnly the Write permission for \n\tC:\\Documents and Settings\\All Users\\Application Data\\Microsoft.");
        Console.WriteLine("PermitOnly the All permission for \n\tC:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network.");

        PermitOnlyTestMethod();
    }

    public static void PermitOnlyTestMethod()
    {
        Console.WriteLine("Executing PermitOnlyTestMethod.");
        try
        {
            PermissionSet ps = new PermissionSet(PermissionState.None);
            ps.AddPermission(new FileIOPermission(FileIOPermissionAccess.Write,
                "C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network\\SomeFile"));
            Console.WriteLine("Demanding permission to write " +
                "'C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network\\SomeFile'");
            ps.Demand();
            Console.WriteLine("Demand succeeded.");
            ps.AddPermission(
                new FileIOPermission(FileIOPermissionAccess.Write,
                "C:\\"));
            Console.WriteLine("Demanding permission to write to drive C.");

            // This demand should cause an exception.
            ps.Demand();
            // The TestFailed method is called if an exception is not thrown.
            TestFailed();
        }
        catch (Exception e)
        {
            Console.WriteLine("An exception was thrown because of a write demand: " + e.Message);
        }
    }

    public static void TestFailed()
    {
        Console.WriteLine("Executing TestFailed.");
        Console.WriteLine("Throwing an exception.");
        throw new Exception();
    }

    static void Main(string[] args)
    {
        try
        {
            PermitOnlyMethod();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message.ToString());
        }
    }
}
' This sample demonstrates the use of the FileIOPermissionAttribute class.
' The sample follows the recommended procedure of first granting PermitOnly permissions, 
' then using a Deny on that set of granted permissions.  
Imports System.Reflection
Imports System.Security.Permissions
Imports System.Security
Imports System.IO

Class [MyClass]


    ' This method demonstrates the use of the FileIOPermissionAttribute to create a PermitOnly permission.
    ' Set the Read, PathDiscovery, Append, Write, and All properties.
    <FileIOPermissionAttribute(SecurityAction.PermitOnly, Read:="C:\"), _
    FileIOPermissionAttribute(SecurityAction.PermitOnly, _
    PathDiscovery:="C:\Documents and Settings\All Users"), _
    FileIOPermissionAttribute(SecurityAction.PermitOnly, _
    Append:="C:\Documents and Settings\All Users\Application Data"), _
    FileIOPermissionAttribute(SecurityAction.PermitOnly, _
        Write:="C:\Documents and Settings\All Users\Application Data\Microsoft"), _
    FileIOPermissionAttribute(SecurityAction.PermitOnly, _
        All:="C:\Documents and Settings\All Users\Application Data\Microsoft\Network")> _
    Public Shared Sub PermitOnlyMethod()
        Console.WriteLine("Executing PermitOnlyMethod.")
        Console.WriteLine("PermitOnly the Read permission for drive C.")
        Console.WriteLine("PermitOnly the PathDiscovery permission for " & ControlChars.Lf & ControlChars.Tab & "C:\Documents and Settings\All Users.")
        Console.WriteLine("PermitOnly the Append permission for " & ControlChars.Lf & ControlChars.Tab & "C:\Documents and Settings\All Users\Application Data.")
        Console.WriteLine("PermitOnly the Write permission for  " & ControlChars.Lf & ControlChars.Tab & "C:\Documents and Settings\All Users\Application Data\Microsoft.")
        Console.WriteLine("PermitOnly the All permission for " & ControlChars.Lf & ControlChars.Tab & "C:\Documents and Settings\All Users\Application Data\Microsoft\Network.")

        PermitOnlyTestMethod()
    End Sub


    Public Shared Sub PermitOnlyTestMethod()
        Console.WriteLine("Executing PermitOnlyTestMethod.")
        Try
            Dim ps As New PermissionSet(PermissionState.None)
            ps.AddPermission(New FileIOPermission(FileIOPermissionAccess.Write, "C:\Documents and Settings\All Users\Application Data\Microsoft\Network\SomeFile"))
            Console.WriteLine(("Demanding permission to write " & "'C:\Documents and Settings\All Users\Application Data\Microsoft\Network\SomeFile'"))
            ps.Demand()
            Console.WriteLine("Demand succeeded.")
            ps.AddPermission(New FileIOPermission(FileIOPermissionAccess.Write, "C:\"))
            Console.WriteLine("Demanding permission to write to drive C.")

            ' This demand should cause an exception.
            ps.Demand()
            ' The TestFailed method is called if an exception is not thrown.
            TestFailed()
        Catch e As Exception
            Console.WriteLine(("An exception was thrown because of a write demand: " & e.Message))
        End Try
    End Sub


    Public Shared Sub TestFailed()
        Console.WriteLine("Executing TestFailed.")
        Console.WriteLine("Throwing an exception.")
        Throw New Exception()
    End Sub

    Overloads Shared Sub Main(ByVal args() As String)
        Try
            PermitOnlyMethod()
        Catch e As Exception
            Console.WriteLine(e.Message.ToString())
        End Try
    End Sub
End Class

Applies to