내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

Directory.SetAccessControl 메서드

DirectorySecurity 개체에서 설명하는 ACL(액세스 제어 목록) 항목을 지정된 디렉터리에 적용합니다.

네임스페이스:  System.IO
어셈블리:  mscorlib(mscorlib.dll)

public static void SetAccessControl(
	string path,
	DirectorySecurity directorySecurity
)

매개 변수

path
형식: System.String
ACL(액세스 제어 목록) 항목을 추가하거나 제거할 디렉터리입니다.
directorySecurity
형식: System.Security.AccessControl.DirectorySecurity
path 매개 변수에 설명된 디렉터리에 적용할 ACL 항목을 설명하는 DirectorySecurity 개체입니다.

예외상황
ArgumentNullException

directorySecurity 매개 변수가 null인 경우

DirectoryNotFoundException

디렉터리를 찾을 수 없는 경우

ArgumentException

path이 잘못된 경우

UnauthorizedAccessException

현재 프로세스에 path에서 지정한 디렉터리에 액세스할 권한이 없습니다.

또는

현재 프로세스에는 ACL 항목을 설정하기에 충분한 권한이 없습니다.

PlatformNotSupportedException

현재 운영 체제가 Windows 2000 이상이 아닌 경우

SetAccessControl 메서드는 상속되지 않은 ACL 목록을 나타내는 파일에 ACL(액세스 제어 목록) 항목을 적용합니다.

주의 정보주의

directorySecurity 매개 변수에 지정한 ACL이 디렉터리의 기존 ACL을 대체합니다. 새 사용자의 권한을 추가하려면 GetAccessControl 메서드를 사용하여 기존 ACL을 가져온 다음 수정하십시오.

ACL은 지정된 파일이나 디렉터리에서 특정 작업을 수행할 권한을 갖고 있거나 갖고 있지 않은 개인 및/또는 그룹을 나타냅니다. 자세한 내용은 ACL 기술 개요방법: 액세스 제어 목록 항목 추가 또는 제거을 참조하십시오.

SetAccessControl 메서드는 개체를 만든 후 수정된 DirectorySecurity 개체만 유지합니다. DirectorySecurity 개체가 수정되지 않은 경우 이 개체는 파일에 유지되지 않습니다. 따라서 파일에서 DirectorySecurity 개체를 검색할 수 없으며 동일한 개체를 다른 파일에 다시 적용할 수 없습니다.

ACL 정보를 한 파일에서 다른 파일로 복사하려면

  1. GetAccessControl 메서드를 사용하여 소스 파일에서 DirectorySecurity 개체를 검색합니다.

  2. 대상 파일에 대한 DirectorySecurity 개체를 새로 만듭니다.

  3. 소스 DirectorySecurity 개체의 GetSecurityDescriptorBinaryForm 또는 GetSecurityDescriptorSddlForm 메서드를 사용하여 ACL 정보를 검색합니다.

  4. SetSecurityDescriptorBinaryForm 또는 SetSecurityDescriptorSddlForm 메서드를 사용하여 3단계에서 검색된 정보를 대상 DirectorySecurity 개체에 복사합니다.

  5. SetAccessControl 메서드를 사용하여 대상 DirectorySecurity 개체를 대상 파일로 설정합니다.

NTFS 환경에서 부모 폴더에 대한 ListDirectory 권한이 사용자에게 있으면 ReadAttributesReadExtendedAttributes가 사용자에게 부여됩니다. ReadAttributes ReadExtendedAttributes를 거부하려면 부모 디렉터리에서 ListDirectory를 거부합니다.

다음 코드 예제에서는 GetAccessControlSetAccessControl 메서드를 사용하여 디렉터리에 ACL(액세스 제어 목록) 항목을 추가한 후 제거합니다. 이 예제를 실행하려면 유효한 사용자 또는 그룹 계정을 사용해야 합니다.


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

        }
    }
}



.NET Framework

4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

  • FileIOPermission 

    디렉터리의 ACL(액세스 제어 목록)을 열거하는 데 필요한 권한입니다. 연관된 열거형: NoAccess, View

    보안 동작: 요청.

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft