DirectorySecurity クラスとは? わかりやすく解説

DirectorySecurity クラス

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

ディレクトリアクセス制御と監査セキュリティ表します。このクラス継承できません。

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

Public NotInheritable Class
 DirectorySecurity
    Inherits FileSystemSecurity
Dim instance As DirectorySecurity
public sealed class DirectorySecurity : FileSystemSecurity
public ref class DirectorySecurity sealed :
 public FileSystemSecurity
public final class DirectorySecurity extends
 FileSystemSecurity
public final class DirectorySecurity extends
 FileSystemSecurity
解説解説

DirectorySecurity クラスは、システム ディレクトリアクセス権およびアクセス試行監査方法指定します。このクラスは、一連の規則としてアクセス権監査権限表します。各アクセス規則は FileSystemAccessRule オブジェクトによって表され、各監査規則は FileSystemAuditRule オブジェクトによって表されます。

DirectorySecurity クラスは、基になる Microsoft Windows ファイル セキュリティ システム抽象化したクラスです。このシステムでは、ディレクトリへのアクセス制御する随意アクセス制御リスト (DACL: Discretionary Access Control List) と監査対象アクセス制御試行指定するシステム アクセス制御リスト (SACL: System Access Control List) を各ディレクトリ持ちますFileSystemAccessRule クラスFileSystemAuditRule クラスは、DACL と SACL を構成するアクセス制御エントリ (ACE: Access Control Entry) を抽象化したクラスです。

DirectorySecurity クラスでは、DACL および SACL の詳細多くは非表示なります。したがってACE順序null 値を持つ DACL を気にする必要はありません。

ファイルの DACL および SACL を表すアクセス規則取得追加、または変更するには、FileSecurity クラス使用します

ディレクトリ対す新規または変更済みアクセス規則監査規則保持するには、SetAccessControl メソッドまたは SetAccessControl メソッド使用します既存ディレクトリからアクセス規則または監査規則取得するには、GetAccessControl メソッドまたは GetAccessControl メソッド使用します

使用例使用例

DirectorySecurity クラス使用してアクセス制御リスト (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);
    }
}

継承階層継承階層
System.Object
   System.Security.AccessControl.ObjectSecurity
     System.Security.AccessControl.CommonObjectSecurity
       System.Security.AccessControl.NativeObjectSecurity
         System.Security.AccessControl.FileSystemSecurity
          System.Security.AccessControl.DirectorySecurity
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
DirectorySecurity メンバ
System.Security.AccessControl 名前空間



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

辞書ショートカット

すべての辞書の索引

「DirectorySecurity クラス」の関連用語

DirectorySecurity クラスのお隣キーワード
検索ランキング

   

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



DirectorySecurity クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS