FileIOPermission クラス

定義

ファイルとフォルダーにアクセスする機能を制御します。Controls the ability to access files and folders. このクラスは継承できません。This class cannot be inherited.

public ref class FileIOPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class FileIOPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
継承
FileIOPermission
属性
実装

次の例は、を使用FileIOPermissionするコードを示しています。The following examples illustrate code that uses FileIOPermission. 次の2行のコードの後、オブジェクトfは、クライアントコンピューターのローカルディスクにあるすべてのファイルを読み取るためのアクセス許可を表します。After the following two lines of code, the object f represents permission to read all files on the client computer's local disks. 次に、このコード例では、アプリケーションにファイルを読み取るアクセス許可があるかどうかを判断するアクセス許可を要求します。The code example then demands the permission to determine whether the application has permission to read the files.

FileIOPermission^ f = gcnew FileIOPermission( PermissionState::None );
f->AllLocalFiles = FileIOPermissionAccess::Read;
try
{
    f->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
    f.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}

Dim f As New FileIOPermission(PermissionState.None)
f.AllLocalFiles = FileIOPermissionAccess.Read
Try
    f.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

次の2行のコードの後、オブジェクトf2は、C:\test_r を読み取り、C:\example\out.txt. に対して読み書きを行うためのアクセス許可を表します。After the following two lines of code, the object f2 represents permissions to read C:\test_r and read and write to C:\example\out.txt. ReadWriteは、前述のようにファイル/フォルダーのアクセス許可を表します。Read and Write represent the file/folder permissions as previously described. アクセス許可を作成した後、コードはアクセス許可を要求して、アプリケーションにファイルの読み取りと書き込みの権限があるかどうかを判断します。After creating the permission, the code demands the permission to determine whether the application has the right to read and write to the file.

FileIOPermission^ f2 = gcnew FileIOPermission( FileIOPermissionAccess::Read,"C:\\test_r" );
f2->AddPathList( (FileIOPermissionAccess) (FileIOPermissionAccess::Write | FileIOPermissionAccess::Read), "C:\\example\\out.txt" );
try
{
    f2->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f2 As New FileIOPermission(FileIOPermissionAccess.Read, "C:\test_r")
f2.AddPathList(FileIOPermissionAccess.Write Or FileIOPermissionAccess.Read, "C:\example\out.txt")
Try
    f2.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

注釈

このアクセス許可は、によっFileIOPermissionAccessて提供される次の4種類のファイル IO アクセスを区別します。This permission distinguishes between the following four types of file IO access provided by FileIOPermissionAccess:

  • Read:ファイルの内容、またはファイルの長さや最終更新時刻などのファイルに関する情報へのアクセスを読み取ります。Read: Read access to the contents of the file or access to information about the file, such as its length or last modification time.

  • Write:ファイルまたはアクセスの内容への書き込みアクセスを許可して、ファイル名などのファイルに関する情報を変更します。Write: Write access to the contents of the file or access to change information about the file, such as its name. また、削除と上書きも許可されます。Also allows for deletion and overwriting.

  • Append:ファイルの末尾にのみ書き込むことができます。Append: Ability to write to the end of a file only. 読み取ることはできません。No ability to read.

  • PathDiscovery:パス自体の情報にアクセスします。PathDiscovery: Access to the information in the path itself. これにより、パス内の機密情報 (ユーザー名など) や、パスで明らかになるディレクトリ構造に関する情報が保護されます。This helps protect sensitive information in the path, such as user names, as well as information about the directory structure that is revealed in the path. この値は、パスによって表されたファイルまたはフォルダーへのアクセスを与えません。This value does not grant access to files or folders represented by the path.

注意

アセンブリへのアクセス権の付与は、完全な信頼を付与することに似ています。 WriteGiving Write access to an assembly is similar to granting it full trust. アプリケーションがファイルシステムに書き込む必要がない場合は、 Writeアクセスできません。If an application should not write to the file system, it should not have Write access.

これらのアクセス許可はすべて独立しています。つまり、1つの権限は、別の権限に対する権限を意味しません。All these permissions are independent, meaning that rights to one do not imply rights to another. たとえば、アクセスWrite許可は、またはAppendRead対するアクセス許可を意味しません。For example, Write permission does not imply permission to Read or Append. 複数のアクセス許可が必要な場合は、次のコード例に示すように、ビットごとの OR を使用して組み合わせることができます。If more than one permission is desired, they can be combined using a bitwise OR as shown in the code example that follows. ファイルのアクセス許可は、正規の絶対パスの観点で定義されています。呼び出しは、常に標準のファイルパスを使用して行う必要があります。File permission is defined in terms of canonical absolute paths; calls should always be made with canonical file paths.

FileIOPermissionファイルとフォルダーに対する保護された操作について説明します。FileIOPermission describes protected operations on files and folders. クラスFileは、ファイルおよびフォルダーへの安全なアクセスを提供するのに役立ちます。The File class helps provide secure access to files and folders. セキュリティアクセスチェックは、ファイルへのハンドルが作成されるときに実行されます。The security access check is performed when the handle to the file is created. 作成時にチェックを実行すると、セキュリティチェックのパフォーマンスへの影響が最小限に抑えられます。By doing the check at creation time, the performance impact of the security check is minimized. ファイルを開く操作は1回だけ実行されますが、読み取りと書き込みは複数回発生する可能性があります。Opening a file happens once, while reading and writing can happen multiple times. ファイルが開かれると、それ以上のチェックは行われません。Once the file is opened, no further checks are done. 信頼されていない呼び出し元にオブジェクトが渡されると、そのオブジェクトは誤用される可能性があります。If the object is passed to an untrusted caller, it can be misused. たとえば、ファイルハンドルは、アクセス許可の少ないコードがアクセスできるパブリックグローバルスタティックに格納しないでください。For example, file handles should not be stored in public global statics where code with less permission can access them.

FileIOPermissionAccessファイルまたはフォルダーに対して実行できるアクションを指定します。FileIOPermissionAccess specifies actions that can be performed on the file or folder. さらに、ビットごとの OR を使用してこれらのアクションを組み合わせて、複雑なインスタンスを形成することもできます。In addition, these actions can be combined using a bitwise OR to form complex instances.

フォルダーへのアクセスは、そのフォルダーに含まれるすべてのファイルへのアクセスと、そのサブフォルダー内のすべてのファイルとフォルダーへのアクセスを意味します。Access to a folder implies access to all the files it contains, as well as access to all the files and folders in its subfolders. たとえば、c:\ Readフォルダー1\ へのアクセスはRead 、C:\folder1\file1.txt、C:\folder1\folder2\、C:\folder1\folder2\file2.txt などへのアクセスを意味します。For example, Read access to C:\folder1\ implies Read access to C:\folder1\file1.txt, C:\folder1\folder2\, C:\folder1\folder2\file2.txt, and so on.

注意

より前.NET Framework 4.NET Framework 4のバージョンの .NET Framework では、 CodeAccessPermission.Denyメソッドを使用して、信頼されたコードによってシステムリソースに誤ってアクセスすることを防ぐことができました。In versions of the .NET Framework before the .NET Framework 4.NET Framework 4, you could use the CodeAccessPermission.Deny method to prevent inadvertent access to system resources by trusted code. Denyは互換性のために残されています。また、リソースへのアクセスは、アセンブリに与えられたアクセス許可セットによってのみ決定されるようになりました。Deny is now obsolete, and access to resources is now determined solely by the granted permission set for an assembly. ファイルへのアクセスを制限するには、サンドボックスで部分信頼コードを実行し、コードがアクセスできるリソースにのみアクセス許可を割り当てる必要があります。To limit access to files, you must run partially trusted code in a sandbox and assign it permissions only to resources that the code is allowed to access. サンドボックスでアプリケーションを実行する方法については、「方法:Run Partially Trusted Code in a Sandbox」 (方法: サンドボックスで部分信頼コードを実行する) を参照してください。For information about running an application in a sandbox, see How to: Run Partially Trusted Code in a Sandbox.

コンストラクター

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String)

指定されたファイルまたはディレクトリへの指定のアクセスと、ファイル制御情報への指定のアクセス権を使用して、FileIOPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the FileIOPermission class with the specified access to the designated file or directory and the specified access rights to file control information.

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[])

指定されたファイルとディレクトリへの指定のアクセスと、ファイル制御情報への指定のアクセス権を使用して、FileIOPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the FileIOPermission class with the specified access to the designated files and directories and the specified access rights to file control information.

FileIOPermission(FileIOPermissionAccess, String)

指定されたファイルまたはディレクトリに対する指定されたアクセスにより、FileIOPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the FileIOPermission class with the specified access to the designated file or directory.

FileIOPermission(FileIOPermissionAccess, String[])

指定されたファイルおよびディレクトリに対する指定されたアクセスにより、FileIOPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the FileIOPermission class with the specified access to the designated files and directories.

FileIOPermission(PermissionState)

指定に従って完全に制限されているか、または無制限のアクセス許可を持つ、FileIOPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the FileIOPermission class with fully restricted or unrestricted permission as specified.

プロパティ

AllFiles

すべてのファイルへの許可されたアクセスを取得または設定します。Gets or sets the permitted access to all files.

AllLocalFiles

すべてのローカル ファイルへの許可されたアクセスを取得または設定します。Gets or sets the permitted access to all local files.

メソッド

AddPathList(FileIOPermissionAccess, String)

指定したファイルまたはディレクトリに対するアクセス権を、既存のアクセス許可の状態に追加します。Adds access for the specified file or directory to the existing state of the permission.

AddPathList(FileIOPermissionAccess, String[])

指定したファイルおよびディレクトリに対するアクセス権を、既存のアクセス許可の状態に追加します。Adds access for the specified files and directories to the existing state of the permission.

Assert()

呼び出し側コードが、このメソッドを呼び出すコードを通じて、アクセス許可要求によって保護されているリソースにアクセス可能であるということ、それも、スタックの中で上位に位置する呼び出し側にリソースへのアクセス許可が付与されていない場合でさえそれが可能であることを宣言します。Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Assert() を使用すると、セキュリティ上の問題が発生することがあります。Using Assert() can create security issues.

(継承元 CodeAccessPermission)
Copy()

現在のアクセス許可の同一のコピーを作成して返します。Creates and returns an identical copy of the current permission.

Demand()

呼び出し履歴の上位にあるすべての呼び出し元に、現在のインスタンスによって指定されているアクセス許可が付与されていない場合、実行時に SecurityException を強制します。Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(継承元 CodeAccessPermission)
Deny()

呼び出し履歴内の上位の呼び出し元が、このメソッドを呼び出すコードを使用して、現在のインスタンスで指定されたリソースにアクセスしないようにします。Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(継承元 CodeAccessPermission)
Equals(Object)

指定した FileIOPermission オブジェクトが、現在の FileIOPermission と等しいかどうかを判断します。Determines whether the specified FileIOPermission object is equal to the current FileIOPermission.

FromXml(SecurityElement)

XML エンコードから指定された状態で、アクセス許可を再構築します。Reconstructs a permission with a specified state from an XML encoding.

GetHashCode()

ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適している、FileIOPermission オブジェクトのハッシュ コードを取得します。Gets a hash code for the FileIOPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

GetPathList(FileIOPermissionAccess)

指定した FileIOPermissionAccess を含むすべてのファイルとディレクトリを取得します。Gets all files and directories with the specified FileIOPermissionAccess.

GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
Intersect(IPermission)

現在のアクセス許可と指定したアクセス許可の積集合となるアクセス許可を作成して返します。Creates and returns a permission that is the intersection of the current permission and the specified permission.

IsSubsetOf(IPermission)

現在のアクセス許可が、指定したアクセス許可のサブセットであるかどうかを判断します。Determines whether the current permission is a subset of the specified permission.

IsUnrestricted()

現在のアクセス許可が無制限かどうかを示す値を返します。Returns a value indicating whether the current permission is unrestricted.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
PermitOnly()

呼び出し履歴内の上位の呼び出し元が、このメソッドを呼び出すコードでは一切リソースにアクセスできないようにします。ただし、現在のインスタンスで指定されているリソースは例外です。Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

(継承元 CodeAccessPermission)
SetPathList(FileIOPermissionAccess, String)

指定したアクセスを指定したファイルまたはディレクトリに設定し、既存のアクセス許可の状態を置き換えます。Sets the specified access to the specified file or directory, replacing the existing state of the permission.

SetPathList(FileIOPermissionAccess, String[])

指定したアクセスを指定したファイルとディレクトリに設定し、指定したアクセスの現在の状態を新しいパスのセットで置き換えます。Sets the specified access to the specified files and directories, replacing the current state for the specified access with the new set of paths.

ToString()

現在のアクセス許可オブジェクトの文字列形式を作成して返します。Creates and returns a string representation of the current permission object.

(継承元 CodeAccessPermission)
ToXml()

アクセス許可とその現在の状態の XML エンコードを作成します。Creates an XML encoding of the permission and its current state.

Union(IPermission)

現在のアクセス許可と指定されたアクセス許可の和集合であるアクセス許可を作成します。Creates a permission that is the union of the current permission and the specified permission.

明示的なインターフェイスの実装

IPermission.Demand() (継承元 CodeAccessPermission)
IStackWalk.Assert() (継承元 CodeAccessPermission)
IStackWalk.Demand() (継承元 CodeAccessPermission)
IStackWalk.Deny() (継承元 CodeAccessPermission)
IStackWalk.PermitOnly() (継承元 CodeAccessPermission)

適用対象

こちらもご覧ください