Directory.GetAccessControl メソッド

定義

ディレクトリの Windows アクセス制御リスト (ACL) を返します。

オーバーロード

GetAccessControl(String)

指定したディレクトリのアクセス制御リスト (ACL) のエントリをカプセル化する DirectorySecurity オブジェクトを取得します。

GetAccessControl(String, AccessControlSections)

指定したディレクトリの、指定した種類のアクセス制御リスト (ACL) エントリをカプセル化する DirectorySecurity オブジェクトを取得します。

GetAccessControl(String)

指定したディレクトリのアクセス制御リスト (ACL) のエントリをカプセル化する DirectorySecurity オブジェクトを取得します。

public:
 static System::Security::AccessControl::DirectorySecurity ^ GetAccessControl(System::String ^ path);
public static System.Security.AccessControl.DirectorySecurity GetAccessControl (string path);
static member GetAccessControl : string -> System.Security.AccessControl.DirectorySecurity
Public Shared Function GetAccessControl (path As String) As DirectorySecurity

パラメーター

path
String

ファイルのアクセス制御リスト (ACL) 情報を示す DirectorySecurity オブジェクトを格納しているディレクトリへのパス。

戻り値

path パラメーターによって記述されるファイルのアクセス制御規則をカプセル化するオブジェクト。

例外

path パラメーターが null です。

ディレクトリを開くときに、I/O エラーが発生しました。

ディレクトリが見つからなかったなどのシステム レベルのエラーが発生しました。 特定の例外が SystemException のサブクラスである可能性があります。

path パラメーターに読み取り専用のディレクトリが指定されています。

- または -

この操作は、現在のプラットフォームではサポートされていません。

または

呼び出し元に、必要なアクセス許可がありません。

次の例では、 GetAccessControl メソッドと メソッドを SetAccessControl 使用してアクセス制御リスト (ACL) エントリを追加し、ACL エントリをディレクトリから削除します。 この例を実行するには、有効なユーザーまたはグループ アカウントを指定する必要があります。

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified directory for the
// specified account.
void AddDirectorySecurity(String^ directoryName, String^ account, 
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->AddAccessRule( gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

// Removes an ACL entry on the specified directory for the
// specified account.
void RemoveDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}    

int main()
{
    String^ directoryName = "TestDirectory";
    String^ accountName = "MYDOMAIN\\MyAccount";
    if (!Directory::Exists(directoryName))
    {
        Console::WriteLine("The directory {0} could not be found.", 
            directoryName);
        return 0;
    }
    try
    {
        Console::WriteLine("Adding access control entry for {0}",
            directoryName);

        // Add the access control entry to the directory.
        AddDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from {0}",
            directoryName);

        // Remove the access control entry from the directory.
        RemoveDirectorySecurity(directoryName, accountName, 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("You are not authorised to carry" +
            " out this procedure.");
    }
    catch (System::Security::Principal::
        IdentityNotMappedException^)
    {
        Console::WriteLine("The account {0} could not be found.", accountName);
    }
}
using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class DirectoryExample
    {
        public static void Main()
        {
            try
            {
                string DirectoryName = "TestDirectory";

                Console.WriteLine("Adding access control entry for " + DirectoryName);

                // Add the access control entry to the directory.
                AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + DirectoryName);

                // Remove the access control entry from the directory.
                RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

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

            Console.ReadLine();
        }

        // Adds an ACL entry on the specified directory for the specified account.
        public static void AddDirectorySecurity(string DirectoryName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(DirectoryName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);
        }

        // Removes an ACL entry on the specified directory for the specified account.
        public static void RemoveDirectorySecurity(string DirectoryName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(DirectoryName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);
        }
    }
}
open System
open System.IO
open System.Security.AccessControl

// Adds an ACL entry on the specified directory for the specified account.
let addDirectorySecurity fileName (account: string) rights controlType =
    // Create a new DirectoryInfo object.
    let dInfo = DirectoryInfo fileName

    // Get a DirectorySecurity object that represents the
    // current security settings.
    let dSecurity = dInfo.GetAccessControl()

    // Add the FileSystemAccessRule to the security settings.
    dSecurity.AddAccessRule(FileSystemAccessRule(account, rights, controlType))

    // Set the new access settings.
    dInfo.SetAccessControl dSecurity

// Removes an ACL entry on the specified directory for the specified account.
let removeDirectorySecurity fileName (account: string) rights controlType =
    // Create a new DirectoryInfo object.
    let dInfo = DirectoryInfo fileName

    // Get a DirectorySecurity object that represents the
    // current security settings.
    let dSecurity = dInfo.GetAccessControl()

    // Add the FileSystemAccessRule to the security settings.
    dSecurity.RemoveAccessRule(FileSystemAccessRule(account, rights, controlType)) |> ignore

    // Set the new access settings.
    dInfo.SetAccessControl dSecurity

try
    let DirectoryName = "TestDirectory"

    printfn $"Adding access control entry for {DirectoryName}"

    // Add the access control entry to the directory.
    addDirectorySecurity DirectoryName @"MYDOMAIN\MyAccount" FileSystemRights.ReadData AccessControlType.Allow

    printfn $"Removing access control entry from {DirectoryName}"

    // Remove the access control entry from the directory.
    removeDirectorySecurity DirectoryName @"MYDOMAIN\MyAccount" FileSystemRights.ReadData AccessControlType.Allow

    printfn "Done."
with e ->
    printfn $"{e}"
Imports System.IO
Imports System.Security.AccessControl



Module DirectoryExample

    Sub Main()
        Try
            Dim DirectoryName As String = "TestDirectory"

            Console.WriteLine("Adding access control entry for " + DirectoryName)

            ' Add the access control entry to the directory.
            AddDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " + DirectoryName)

            ' Remove the access control entry from the directory.
            RemoveDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

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

        Console.ReadLine()

    End Sub


    ' Adds an ACL entry on the specified directory for the specified account.
    Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfoobject.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the 
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub


    ' Removes an ACL entry on the specified directory for the specified account.
    Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfo object.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the 
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub
End Module

注釈

メソッドを GetAccessControl 使用して、ディレクトリのアクセス制御リスト (ACL) エントリを取得します。

ACL は、特定のファイルまたはディレクトリに対する特定のアクションに対する権限を持っているか、持っていない個人またはグループを表します。 詳細については、「方法: アクセス制御リスト エントリを追加または削除する」を参照してください。

NTFS 環境では、 と ReadExtendedAttributes は、ReadAttributesユーザーが親フォルダーに対する権限を持っているListDirectory場合にユーザーに付与されます。 と を拒否ReadAttributesReadExtendedAttributesするには、親ディレクトリで deny ListDirectory を指定します。

適用対象

GetAccessControl(String, AccessControlSections)

指定したディレクトリの、指定した種類のアクセス制御リスト (ACL) エントリをカプセル化する DirectorySecurity オブジェクトを取得します。

public:
 static System::Security::AccessControl::DirectorySecurity ^ GetAccessControl(System::String ^ path, System::Security::AccessControl::AccessControlSections includeSections);
public static System.Security.AccessControl.DirectorySecurity GetAccessControl (string path, System.Security.AccessControl.AccessControlSections includeSections);
static member GetAccessControl : string * System.Security.AccessControl.AccessControlSections -> System.Security.AccessControl.DirectorySecurity
Public Shared Function GetAccessControl (path As String, includeSections As AccessControlSections) As DirectorySecurity

パラメーター

path
String

ファイルのアクセス制御リスト (ACL) 情報を示す DirectorySecurity オブジェクトを格納しているディレクトリへのパス。

includeSections
AccessControlSections

取得するアクセス制御リスト (ACL) の情報の型を指定する AccessControlSections 値のいずれか。

戻り値

path パラメーターによって記述されるファイルのアクセス制御規則をカプセル化するオブジェクト。

例外

path パラメーターが null です。

ディレクトリを開くときに、I/O エラーが発生しました。

ディレクトリが見つからなかったなどのシステム レベルのエラーが発生しました。 特定の例外が SystemException のサブクラスである可能性があります。

path パラメーターに読み取り専用のディレクトリが指定されています。

- または -

この操作は、現在のプラットフォームではサポートされていません。

または

呼び出し元に、必要なアクセス許可がありません。

注釈

メソッドを GetAccessControl 使用して、ディレクトリのアクセス制御リスト (ACL) エントリを取得します。

ACL は、特定のファイルまたはディレクトリに対する特定のアクションに対する権限を持っているか、持っていない個人またはグループを表します。 詳細については、「方法: アクセス制御リスト エントリを追加または削除する」を参照してください。

NTFS 環境では、 と ReadExtendedAttributes は、ReadAttributesユーザーが親フォルダーに対する権限を持っているListDirectory場合にユーザーに付与されます。 と を拒否ReadAttributesReadExtendedAttributesするには、親ディレクトリで deny ListDirectory を指定します。

適用対象