FileSystemRights 列挙型

定義

アクセス規則と監査規則を作成するときに使用するアクセス権を定義します。

この列挙体は、メンバー値のビットごとの組み合わせをサポートしています。

public enum class FileSystemRights
[System.Flags]
public enum FileSystemRights
[System.Flags]
[System.Security.SecurityCritical]
public enum FileSystemRights
[<System.Flags>]
type FileSystemRights = 
[<System.Flags>]
[<System.Security.SecurityCritical>]
type FileSystemRights = 
Public Enum FileSystemRights
継承
FileSystemRights
属性

フィールド

AppendData 4

ファイルの末尾にデータを追加する権限を指定します。

ChangePermissions 262144

ファイルまたはフォルダーに関連付けられているセキュリティ規則と監査規則を変更する権限を指定します。

CreateDirectories 4

フォルダーを作成する権限を指定します。この権限には Synchronize 値が必要です。

CreateFiles 2

ファイルを作成する権限を指定します。 この権限には、Synchronize 値が必要です。

Delete 65536

フォルダーまたはファイルを削除する権限を指定します。

DeleteSubdirectoriesAndFiles 64

フォルダーとそのフォルダーに含まれるファイルを削除する権限を指定します。

ExecuteFile 32

アプリケーション ファイルを実行する権限を指定します。

FullControl 2032127

フォルダーまたはファイルを完全に制御し、アクセス制御と監査規則を変更する権限を指定します。 この値は、ファイルを使用して何かを実行する権限を表し、この列挙体のすべての権限の組み合わせです。

ListDirectory 1

ディレクトリの内容を読み取る権限を指定します。

Modify 197055

フォルダーの内容の読み取り、書き込み、一覧表示、フォルダーとファイルの削除、アプリケーション ファイルの実行を行う権限を指定します。 この権限には、ReadAndExecute 右、Write 右、および Delete 右が含まれます。

Read 131209

フォルダーまたはファイルを開いてコピーする権限を読み取り専用として指定します。 この権限には、ReadData 右、右 ReadExtendedAttributes、右 ReadAttributes、右 ReadPermissions 含まれます。

ReadAndExecute 131241

フォルダーまたはファイルを読み取り専用として開いてコピーし、アプリケーション ファイルを実行する権限を指定します。 この権限には、Read 権限と ExecuteFile 権限が含まれます。

ReadAttributes 128

フォルダーまたはファイルからファイル システム属性を開いてコピーする権限を指定します。 たとえば、この値は、ファイルの作成日または変更日を表示する権限を指定します。 これには、データの読み取り権限、拡張ファイル システム属性、アクセス規則と監査規則は含まれません。

ReadData 1

ファイルまたはフォルダーを開いてコピーする権限を指定します。 これには、ファイル システム属性、拡張ファイル システム属性、またはアクセス規則と監査規則を読み取る権限は含まれません。

ReadExtendedAttributes 8

フォルダーまたはファイルから拡張ファイル システム属性を開いてコピーする権限を指定します。 たとえば、この値は作成者とコンテンツの情報を表示する権限を指定します。 これには、データ、ファイル システム属性、またはアクセス規則と監査規則を読み取る権限は含まれません。

ReadPermissions 131072

フォルダーまたはファイルからアクセス規則と監査規則を開いてコピーする権限を指定します。 これには、データ、ファイル システム属性、拡張ファイル システム属性を読み取る権限は含まれません。

Synchronize 1048576

アプリケーションが I/O 操作の完了と同期するファイル ハンドルを待機できるかどうかを指定します。 この値は、アクセスを許可するときに自動的に設定され、アクセスを拒否するときに自動的に除外されます。

TakeOwnership 524288

フォルダーまたはファイルの所有者を変更する権限を指定します。 リソースの所有者は、そのリソースへのフル アクセス権を持つことに注意してください。

Traverse 32

フォルダーの内容を一覧表示し、そのフォルダーに含まれるアプリケーションを実行する権限を指定します。

Write 278

フォルダーとファイルを作成し、ファイルにデータを追加または削除する権限を指定します。 この権限には、WriteData 右、右 AppendData、右 WriteExtendedAttributes、右 WriteAttributes 含まれます。

WriteAttributes 256

ファイル システム属性を開いてフォルダーまたはファイルに書き込む権限を指定します。 これには、データ、拡張属性、またはアクセス規則と監査規則を書き込む機能は含まれません。

WriteData 2

ファイルまたはフォルダーを開いて書き込む権限を指定します。 これには、ファイル システム属性、拡張ファイル システム属性、アクセスおよび監査規則を開いて書き込む権限は含まれません。

WriteExtendedAttributes 16

拡張ファイル システム属性を開いてフォルダーまたはファイルに書き込む権限を指定します。 これには、データ、属性、またはアクセスおよび監査規則を書き込む機能は含まれません。

次の例では、FileSystemRights 列挙体を使用してアクセス規則を指定し、ファイルからアクセス規則を削除します。 この例を実行するには、有効なユーザーまたはグループ アカウントを指定する必要があります。

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string fileName = "test.xml";

                Console.WriteLine($"Adding access control entry for {fileName}");

                // Add the access control entry to the file.
                AddFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine($"Removing access control entry from {fileName}");

                // Remove the access control entry from the file.
                RemoveFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        // Adds an ACL entry on the specified file for the specified account.
        public static void AddFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {
            FileInfo fileInfo = new(fileName);
            FileSecurity fSecurity = fileInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            fileInfo.SetAccessControl(fSecurity);
        }

        // Removes an ACL entry on the specified file for the specified account.
        public static void RemoveFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {
            FileInfo fileInfo = new(fileName);
            FileSecurity fSecurity = fileInfo.GetAccessControl();

            // Remove the FileSystemAccessRule from the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            fileInfo.SetAccessControl(fSecurity);
        }
    }
}
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim fileName As String = "test.xml"

            Console.WriteLine("Adding access control entry for " & fileName)

            ' Add the access control entry to the file.
            AddFileSecurity(fileName, "DomainName\AccountName",
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " & fileName)

            ' Remove the access control entry from the file.
            RemoveFileSecurity(fileName, "DomainName\AccountName",
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    ' Adds an ACL entry on the specified file for the specified account.
    Sub AddFileSecurity(ByVal fileName As String, ByVal account As String,
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        Dim fileInfo As New FileInfo(fileName)
        Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        Dim accessRule As New FileSystemAccessRule(account, rights, controlType)

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        fileInfo.SetAccessControl(fSecurity)

    End Sub

    ' Removes an ACL entry on the specified file for the specified account.
    Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String,
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        Dim fileInfo As New FileInfo(fileName)
        Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()

        ' Remove the FileSystemAccessRule from the security settings. 
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(account,
            rights, controlType))

        ' Set the new access settings.
        fileInfo.SetAccessControl(fSecurity)

    End Sub
End Module

注釈

FileSystemRights 列挙体は、特定のユーザー アカウントに対して許可されるファイル システム アクションと、特定のユーザー アカウントに対して監査されるファイル システム アクションを指定します。

FileSystemAccessRule クラスを使用してアクセス規則を作成する場合、または FileSystemAuditRule クラスで監査規則を作成する場合は、FileSystemRights 列挙体を使用します。

この列挙には、いくつかの詳細なシステム権限の値と、それらの詳細な値の組み合わせであるいくつかの値が含まれています。 各コンポーネント値を個別に指定するよりも、FullControlReadWriteなどの組み合わせの値を使用する方が簡単です。

CreateDirectoriesCreateFiles の権利には、Synchronize 権限が必要です。 ファイルまたはディレクトリの作成時に Synchronize 値を明示的に設定しない場合は、自動的に設定されます。

適用対象