FileIOPermission クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
注意事項
Code Access Security is not supported or honored by the runtime.
ファイルとフォルダーにアクセスする機能を制御します。 このクラスは継承できません。
public ref class FileIOPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type FileIOPermission = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type FileIOPermission = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
[<System.Serializable>]
type FileIOPermission = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileIOPermission = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
Public NotInheritable Class FileIOPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
- 継承
- 属性
- 実装
例
次の例は、 FileIOPermission. 次の 2 行のコードの後、オブジェクト f
はクライアント コンピューターのローカル ディスク上のすべてのファイルを読み取るアクセス許可を表します。 次に、コード例では、アプリケーションがファイルを読み取るアクセス許可を持っているかどうかを判断するためのアクセス許可を要求します。
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 行のコードの後、オブジェクトは C:\test_r を読み取り、C:\example\out.txtに対する読み取りと書き込みを行うアクセス許可を表します f2
。 Read
前 Write
に説明したように、ファイル/フォルダーのアクセス許可を表します。 アクセス許可を作成した後、コードは、アプリケーションがファイルの読み取りと書き込みを行う権限を持っているかどうかを判断するためのアクセス許可を要求します。
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
注釈
このアクセス許可により、次の 4 種類のファイル IO アクセスが FileIOPermissionAccess区別されます。
Read
: ファイルの内容への読み取りアクセス、またはファイルに関する情報 (長さ、最終変更時刻など) へのアクセス。Write
: ファイルの内容へのアクセスを書き込むか、ファイルの名前などの変更情報にアクセスします。 また、削除と上書きも可能です。Append
: ファイルの末尾にのみ書き込む機能。 読み取り機能がありません。PathDiscovery
: パス自体の情報にアクセスします。 これにより、パス内の機密情報 (ユーザー名など) と、パスに表示されるディレクトリ構造に関する情報を保護できます。 この値は、パスによって表されたファイルまたはフォルダーへのアクセスを与えません。
注意
アセンブリへのアクセス権を付与 Write することは、アセンブリに完全な信頼を付与するのと似ています。 アプリケーションがファイル システムに書き込む必要がない場合は、アクセスできません Write 。
これらのアクセス許可はすべて独立しています。つまり、ある権限が別の権限を意味するものではありません。 たとえば、Write
権限はアクセス許可をRead``Append
意味しません。 複数のアクセス許可が必要な場合は、次のコード例に示すように、ビットごとの OR を使用して組み合わせることができます。 ファイルのアクセス許可は、正規の絶対パスの観点から定義されます。呼び出しは、常に標準ファイル パスで行う必要があります。
FileIOPermission では、ファイルとフォルダーに対する保護された操作について説明します。 このクラスは File 、ファイルとフォルダーへの安全なアクセスを提供するのに役立ちます。 セキュリティ アクセス チェックは、ファイルへのハンドルが作成されるときに実行されます。 作成時にチェックを行うことで、セキュリティ チェックのパフォーマンスへの影響が最小限に抑えられます。 ファイルを開くと 1 回行われますが、読み取りと書き込みは複数回発生する可能性があります。 ファイルを開くと、それ以上のチェックは行われません。 オブジェクトが信頼されていない呼び出し元に渡されると、誤用される可能性があります。 たとえば、ファイル ハンドルは、アクセス許可が低いコードがアクセスできるパブリック グローバル 静的ファイルに格納しないでください。
FileIOPermissionAccess は、ファイルまたはフォルダーに対して実行できるアクションを指定します。 さらに、これらのアクションは、ビットごとの OR を使用して組み合わせて複雑なインスタンスを形成できます。
フォルダーへのアクセスは、フォルダーに含まれるすべてのファイルへのアクセスと、そのサブフォルダー内のすべてのファイルとフォルダーへのアクセスを意味します。 たとえば、 Read
C:\folder1\ へのアクセスは、C:\folder1\file1.txt、C:\folder1\folder2\、C:\folder1\folder2\file2.txt などへのアクセスを意味Read
します。
注意
.NET Framework 4 より前のバージョンの.NET Frameworkでは、このメソッドをCodeAccessPermission.Deny使用して、信頼されたコードによるシステム リソースへの不注意なアクセスを防ぐことができます。 Deny は廃止され、リソースへのアクセスは、アセンブリに対して付与されたアクセス許可セットによってのみ決定されるようになりました。 ファイルへのアクセスを制限するには、サンドボックスで部分的に信頼されたコードを実行し、コードがアクセスを許可されているリソースにのみアクセス許可を割り当てる必要があります。 アプリケーションをサンドボックス内で実行する方法の詳細については、「方法: サンドボックスで部分信頼コードを実行する」をご覧ください。
コンストラクター
FileIOPermission(FileIOPermissionAccess, AccessControlActions, String) |
指定されたファイルまたはディレクトリへの指定のアクセスと、ファイル制御情報への指定のアクセス権を使用して、FileIOPermission クラスの新しいインスタンスを初期化します。 |
FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[]) |
指定されたファイルとディレクトリへの指定のアクセスと、ファイル制御情報への指定のアクセス権を使用して、FileIOPermission クラスの新しいインスタンスを初期化します。 |
FileIOPermission(FileIOPermissionAccess, String) |
指定されたファイルまたはディレクトリに対する指定されたアクセスにより、FileIOPermission クラスの新しいインスタンスを初期化します。 |
FileIOPermission(FileIOPermissionAccess, String[]) |
指定されたファイルおよびディレクトリに対する指定されたアクセスにより、FileIOPermission クラスの新しいインスタンスを初期化します。 |
FileIOPermission(PermissionState) |
指定に従って完全に制限されているか、または無制限のアクセス許可を持つ、FileIOPermission クラスの新しいインスタンスを初期化します。 |
プロパティ
AllFiles |
すべてのファイルへの許可されたアクセスを取得または設定します。 |
AllLocalFiles |
すべてのローカル ファイルへの許可されたアクセスを取得または設定します。 |
メソッド
AddPathList(FileIOPermissionAccess, String) |
指定したファイルまたはディレクトリに対するアクセス権を、既存のアクセス許可の状態に追加します。 |
AddPathList(FileIOPermissionAccess, String[]) |
指定したファイルおよびディレクトリに対するアクセス権を、既存のアクセス許可の状態に追加します。 |
Assert() |
呼び出し側コードが、このメソッドを呼び出すコードを通じて、アクセス許可要求によって保護されているリソースにアクセス可能であるということ、それも、スタックの中で上位に位置する呼び出し側にリソースへのアクセス許可が付与されていない場合でさえそれが可能であることを宣言します。 Assert() を使用すると、セキュリティ上の問題が発生することがあります。 (継承元 CodeAccessPermission) |
Copy() |
現在のアクセス許可の同一のコピーを作成して返します。 |
Demand() |
呼び出し履歴の上位にあるすべての呼び出し元に、現在のインスタンスによって指定されているアクセス許可が付与されていない場合、実行時に SecurityException を強制します。 (継承元 CodeAccessPermission) |
Deny() |
互換性のために残されています。
互換性のために残されています。
呼び出し履歴内の上位の呼び出し元が、このメソッドを呼び出すコードを使用して、現在のインスタンスで指定されたリソースにアクセスしないようにします。 (継承元 CodeAccessPermission) |
Equals(Object) |
指定した FileIOPermission オブジェクトが、現在の FileIOPermission と等しいかどうかを判断します。 |
Equals(Object) |
指定した CodeAccessPermission オブジェクトが、現在の CodeAccessPermission と等しいかどうかを判断します。 (継承元 CodeAccessPermission) |
FromXml(SecurityElement) |
XML エンコードから指定された状態で、アクセス許可を再構築します。 |
GetHashCode() |
ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適している、FileIOPermission オブジェクトのハッシュ コードを取得します。 |
GetHashCode() |
ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適している、CodeAccessPermission オブジェクトのハッシュ コードを取得します。 (継承元 CodeAccessPermission) |
GetPathList(FileIOPermissionAccess) |
指定した FileIOPermissionAccess を含むすべてのファイルとディレクトリを取得します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
Intersect(IPermission) |
現在のアクセス許可と指定したアクセス許可の積集合となるアクセス許可を作成して返します。 |
IsSubsetOf(IPermission) |
現在のアクセス許可が、指定したアクセス許可のサブセットであるかどうかを判断します。 |
IsUnrestricted() |
現在のアクセス許可が無制限かどうかを示す値を返します。 |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
PermitOnly() |
呼び出し履歴内の上位の呼び出し元が、このメソッドを呼び出すコードでは一切リソースにアクセスできないようにします。ただし、現在のインスタンスで指定されているリソースは例外です。 (継承元 CodeAccessPermission) |
SetPathList(FileIOPermissionAccess, String) |
指定したアクセスを指定したファイルまたはディレクトリに設定し、既存のアクセス許可の状態を置き換えます。 |
SetPathList(FileIOPermissionAccess, String[]) |
指定したアクセスを指定したファイルとディレクトリに設定し、指定したアクセスの現在の状態を新しいパスのセットで置き換えます。 |
ToString() |
現在のアクセス許可オブジェクトの文字列形式を作成して返します。 (継承元 CodeAccessPermission) |
ToXml() |
アクセス許可とその現在の状態の XML エンコードを作成します。 |
Union(IPermission) |
現在のアクセス許可と指定されたアクセス許可の和集合であるアクセス許可を作成します。 |
明示的なインターフェイスの実装
IPermission.Demand() |
セキュリティ要件が満たされない場合、実行時に SecurityException をスローします。 (継承元 CodeAccessPermission) |
IStackWalk.Assert() |
スタック内の上位の呼び出し元がリソースへのアクセス許可を付与されていない場合であっても、呼び出し元のコードが現在のアクセス許可で識別されるリソースにアクセスできることをアサートします。 (継承元 CodeAccessPermission) |
IStackWalk.Demand() |
呼び出し履歴のすべての呼び出し元に、現在のアクセス許可オブジェクトで指定されたアクセス許可が付与されているかどうかを判断します。 (継承元 CodeAccessPermission) |
IStackWalk.Deny() |
呼び出し元のコードを通過する現在のオブジェクトのすべての Demand() が失敗します。 (継承元 CodeAccessPermission) |
IStackWalk.PermitOnly() |
呼び出し側コードによってパススルーされる現在のものを除き、全オブジェクトのあらゆる Demand() を失敗させます。これは、呼び出しスタックの上位にあるコードに対して他のリソースにアクセスするためのアクセス権限が付与されている場合にも当てはまります。 (継承元 CodeAccessPermission) |