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

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

File.SetAccessControl メソッド

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

FileSecurity オブジェクトによって表されるアクセス制御リスト (ACL: Access Control List) のエントリを、指定したファイル適用します。

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

Public Shared Sub SetAccessControl
 ( _
    path As String, _
    fileSecurity As FileSecurity _
)
Dim path As String
Dim fileSecurity As FileSecurity

File.SetAccessControl(path, fileSecurity)
public static void SetAccessControl
 (
    string path,
    FileSecurity fileSecurity
)
public:
static void SetAccessControl (
    String^ path, 
    FileSecurity^ fileSecurity
)
public static void SetAccessControl
 (
    String path, 
    FileSecurity fileSecurity
)
public static function SetAccessControl
 (
    path : String, 
    fileSecurity : FileSecurity
)

パラメータ

path

アクセス制御リスト (ACL) のエントリの追加または削除対象となるファイル

fileSecurity

path パラメータによって示されファイル適用する ACL のエントリを表す FileSecurity オブジェクト

例外例外
例外種類条件

IOException

ファイルを開くときに、I/O エラー発生しました

SEHException

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

SystemException

ファイルが見つかりませんでした

UnauthorizedAccessException

path パラメータ読み取り専用ファイル指定されました。

または

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

または

path パラメータによって、ディレクトリ指定されました。

または

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

解説解説

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

注意に関するメモ注意

fileSecurity パラメータ用に指定されACL は、ファイル既存ACL置き換えます新規ユーザーアクセス許可追加するには、まず GetAccessControl メソッド使用して既存ACL取得し、これを変更します次にSetAccessControl使用して変更済みACLファイル適用し直します

ACL には、指定したファイルに対して特定の処理を行う権限を持つユーザーおよびグループ、または権限持たないユーザーおよびグループ示されます。詳細については、アクセス制御リスト (ACL: Access Control List) 技術の概要方法 : アクセス制御リスト エントリを追加または削除する の各トピック参照してください

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

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

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

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

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

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

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

  6. NTFS 環境では、ユーザーが親フォルダに対して ListDirectory 権限持っている場合、ReadAttributes および ReadExtendedAttributes がそのユーザー付与されます。ReadAttributes および ReadExtendedAttributes拒否するには、親ディレクトリListDirectory拒否します

使用例使用例

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

Imports System
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)
  
        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

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

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        File.SetAccessControl(fileName, 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)

        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

        ' Add the FileSystemAccessRule to the security settings. 
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(account,
 _
            rights, controlType))

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub
End Module
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)
        {
            

            // Get a FileSecurity object that represents the 
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

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

            // Set the new access settings.
            File.SetAccessControl(fileName, 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)
        {

            // Get a FileSecurity object that represents the 
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

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

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);

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

// Adds an ACL entry on the specified file for the specified account.

void AddFileSecurity(String^ fileName, String^ account, 
                        FileSystemRights rights, AccessControlType controlType)
{
    // Get a FileSecurity object that represents the 
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

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

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

// Removes an ACL entry on the specified file for the specified account.

void RemoveFileSecurity(String^ fileName, String^ account, 
                        FileSystemRights rights, AccessControlType controlType)
{

    // Get a FileSecurity object that represents the 
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

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

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.xml";

        Console::WriteLine("Adding access control entry for
 " + fileName);

        // Add the access control entry to the file.
        AddFileSecurity(fileName, "MYDOMAIN\\MyAccount", 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from " + fileName);

        // Remove the access control entry from the file.
        RemoveFileSecurity(fileName, "MYDOMAIN\\MyAccount", 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

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



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

辞書ショートカット

すべての辞書の索引

「File.SetAccessControl メソッド」の関連用語

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

   

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



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

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

©2025 GRAS Group, Inc.RSS