Export (0) Print
Expand All

FileIOPermissionAttribute Constructor

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

Namespace:  System.Security.Permissions
Assembly:  mscorlib (in mscorlib.dll)

public FileIOPermissionAttribute(
	SecurityAction action
)

Parameters

action
Type: System.Security.Permissions.SecurityAction

One of the SecurityAction values.

ExceptionCondition
ArgumentException

The action parameter is not a valid SecurityAction.

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 System;
using System.Reflection;
using System.Security.Permissions;
using System.Security;
using System.IO;

class MyClass
{
    public static void FileIOPermissionAttributeDemo()
    {
        try
        {
            PermitOnlyMethod();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message.ToString());
        }
        try
        {
            DenyMethod();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message.ToString());
        }
        try
        {
            DenyAllMethod();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message.ToString());
        }

    }

    // 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);
        }
    }
    // This method demonstrates the use of the FileIOPermission Attribute to deny a permission.
    [FileIOPermissionAttribute(SecurityAction.Deny,
         Write = "C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network")]
    public static void DenyMethod()
    {
        Console.WriteLine("Executing DenyMethod.");
        Console.WriteLine("Denied the Write permission for \n\t"
            + "'C:\\Documents and Settings\\All Users\\Application Data\\Microsoft\\Network'");

        DenyTestMethod();
    }

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

            // 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);
        }
    }

    // This method demonstrates the use of the FileIOPermissionAttribute to deny all permissions.
    [FileIOPermissionAttribute(SecurityAction.Deny, Unrestricted = true)]
    public static void DenyAllMethod()
    {
        Console.WriteLine("Executing DenyAllMethod.");
        Console.WriteLine("Denied all FileIOPermissions");

        DenyAllTestMethod();
    }
    // This method tests to assure permissions have been denied. 
    public static void DenyAllTestMethod()
    {
        Console.WriteLine("Executing DenyAllTestMethod.");
        try
        {
            PermissionSet ps = new PermissionSet(PermissionState.None);
            ps.AddPermission (new FileIOPermission(FileIOPermissionAccess.Read, "C:\\"));
            Console.WriteLine("Demanding permission to read 'C:\\'");
            // This demand should cause an exception.
            ps.Demand();
            // The TestFailed method is called if the expected exception is not thrown.
            TestFailed();
        }

        catch (Exception e)

        {
            Console.WriteLine("An exception was thrown because of a read demand: " + e.Message);
        }
    }

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

    static void Main(string[] args)
    {
        FileIOPermissionAttributeDemo();
    }

}

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.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft