DirectoryInfo.SetAccessControl メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > DirectoryInfo.SetAccessControl メソッドの意味・解説 

DirectoryInfo.SetAccessControl メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

DirectorySecurity オブジェクトが示すアクセス制御リスト (ACL) エントリを、現在の DirectoryInfo オブジェクトが示すディレクトリ適用します。

名前空間: System.IO
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub SetAccessControl ( _
    directorySecurity As DirectorySecurity _
)
Dim instance As DirectoryInfo
Dim directorySecurity As DirectorySecurity

instance.SetAccessControl(directorySecurity)
public void SetAccessControl (
    DirectorySecurity directorySecurity
)
public:
void SetAccessControl (
    DirectorySecurity^ directorySecurity
)
public void SetAccessControl (
    DirectorySecurity directorySecurity
)
public function SetAccessControl (
    directorySecurity : DirectorySecurity
)

パラメータ

directorySecurity

path パラメータが示すディレクトリ適用する ACL エントリを表す DirectorySecurity オブジェクト

例外例外
例外種類条件

ArgumentNullException

directorySecurity パラメータnull 参照 (Visual Basic では Nothing) です。

SystemException

ファイルが見つからないか、または変更されています。

UnauthorizedAccessException

現在のプロセスには、ファイルを開くために必要なアクセス権がありません。

PlatformNotSupportedException

現在のオペレーティング システムMicrosoft Windows 2000 以降ではありません。

解説解説

SetAccessControl メソッドは、非継承 ACL リストを表すファイルアクセス制御リスト (ACL) エントリを適用します。

注意に関するメモ注意

ディレクトリ既存ACL が、directorySecurity指定されACL置き換えられます。新しユーザーアクセス許可追加するには、GetAccessControl メソッド使用して既存ACL取得し、これを変更します

  1. ACL は、指定したファイルまたはディレクトリ上で特定のアクションに対して権限を持つ (または持たない) 個人およびグループ、またはそのいずれか示します詳細については、アクセス制御リスト (ACL: Access Control List) 技術の概要方法 : アクセス制御リスト エントリを追加または削除する の各トピック参照してください

SetAccessControl メソッドでは、作成後に変更されDirectorySecurity オブジェクトのみが保持されます。DirectorySecurity オブジェクト変更されていない場合は、ファイル保持されません。したがってファイルかDirectorySecurity オブジェクト取得して、同じオブジェクト別のファイル適用することはできません。

ファイルかファイルACL 情報コピーするには、次の操作実行します

  1. GetAccessControl メソッド使用してDirectorySecurity オブジェクトソース ファイルから取得します

  2. コピー先のファイル新しDirectorySecurity オブジェクト作成します

  3. コピー元となる DirectorySecurity オブジェクトの GetSecurityDescriptorBinaryForm メソッドまたは GetSecurityDescriptorSddlForm メソッド使用してACL 情報取得します

  4. SetSecurityDescriptorBinaryForm メソッドまたは SetSecurityDescriptorSddlForm メソッド使用して手順 3 で取得した情報コピー先の DirectorySecurity オブジェクトコピーします

  5. SetAccessControl メソッド使用してコピー先の DirectorySecurity オブジェクトコピー先のファイル設定します

使用例使用例

GetAccessControl メソッドおよび SetAccessControl メソッド使用してディレクトリアクセス制御リスト (ACL) エントリを追加し次にディレクトリから ACL エントリを削除するコード例次に示します

Imports System
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

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 FileName, string
 Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // 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 FileName, string
 Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

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

        }
    }
}

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

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からDirectoryInfo.SetAccessControl メソッドを検索した結果を表示しています。
Weblioに収録されているすべての辞書からDirectoryInfo.SetAccessControl メソッドを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からDirectoryInfo.SetAccessControl メソッドを検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

DirectoryInfo.SetAccessControl メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



DirectoryInfo.SetAccessControl メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS