프로그래밍 방식으로 Active Directory 서비스 인터페이스에서 Microsoft Visual C#를 사용 하 여 NTFS 파일 시스템 폴더 사용 권한을 설정 하는 방법

적용 대상: Windows Servers

소개


이 문서에 Microsoft Visual C# Active Directory 서비스 인터페이스 (ADSI)를 사용 하 여 프로그래밍 방식으로 NTFS 파일 시스템 폴더 사용 권한을 설정 하는 방법을 설명 합니다.

추가 정보


샘플 응용 프로그램 빌드

다음 샘플 응용 프로그램을 실행 하려면 ADsSecurity.dll 파일 및 설치 된 ADsSecurity.dll 파일에 있어야 합니다. 이러한 파일은 Active Directory 서비스 인터페이스 2.5에 대 한 소프트웨어 개발 키트 (SDK)에 포함 되어 있습니다. Active Directory 서비스 인터페이스 2.5에 대 한 SDK를 다운로드 하려면 다음 Microsoft 웹 사이트를 방문 하십시오.참고: 샘플 응용 프로그램을 실행 하려면 컴퓨터에 관리 자격 증명이 있어야 합니다. 샘플 응용 프로그램을 작성 하려면 다음과이 같이 하십시오.
  1. Microsoft Visual Studio.NET 또는 Microsoft Visual Studio 2005 시작 합니다.
  2. 파일 메뉴에서새로 만들기클릭 한 다음 프로젝트를 클릭 합니다.
  3. Visual C# 프로젝트템플릿에서Windows 응용 프로그램 을 클릭 합니다. 참고: Visual Studio 2005에서 Visual C# 프로젝트C#로 변경 됩니다.
  4. 이름 상자에NTFSPermissions입력 하 고확인을 클릭 합니다.
  5. Form1 폼을 단추 컨트롤을 추가 합니다.
  6. 프로젝트 메뉴에서 참조 추가클릭 합니다.
  7. COM 탭을 클릭 하 고 다음 항목을 선택 하려면 클릭 다음 확인을 누릅니다.
    • 현재 DS 형식 라이브러리
    • ADsSecurity 2.5 형식 라이브러리
  8. Form1 폼을 마우스 오른쪽 단추로 클릭 하 고코드 보기를클릭 합니다.
  9. Form1 폼의 소스 코드의 맨 위에 다음 using 문을 추가 합니다.
    using ADSSECURITYLib;using ActiveDs;
  10. Form1 클래스에 다음 메서드를 추가 합니다.
    public void SetPermissions(String vPath, String UserName ){ADsSecurity objADsSec;SecurityDescriptor objSecDes;AccessControlList objDAcl;AccessControlEntry objAce1;AccessControlEntry objAce2;Object objSIdHex;ADsSID objSId;objADsSec = new ADsSecurityClass();objSecDes = (SecurityDescriptor) (objADsSec.GetSecurityDescriptor("FILE://" + vPath));objDAcl = (AccessControlList)objSecDes.DiscretionaryAcl;objSId = new ADsSIDClass();objSId.SetAs((int)ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SAM, UserName.ToString());objSIdHex = objSId.GetAs((int)ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SDDL);// Add a new access control entry (ACE) object (objAce) so that the user has Full Control permissions on NTFS file system files.objAce1 = new AccessControlEntryClass();objAce1.Trustee = (objSIdHex).ToString();objAce1.AccessMask = (int)ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL;objAce1.AceType = (int)ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;objAce1.AceFlags = (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ACE | (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ONLY_ACE | 1;objDAcl.AddAce(objAce1);// Add a new access control entry object (objAce) so that the user has Full Control permissions on NTFS file system folders.objAce2 = new AccessControlEntryClass();objAce2.Trustee = (objSIdHex).ToString();objAce2.AccessMask =  (int)ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL;objAce2.AceType = (int)ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;objAce2.AceFlags = (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ACE | 1;objDAcl.AddAce(objAce2);objSecDes.DiscretionaryAcl = objDAcl;// Set permissions on the NTFS file system folder.objADsSec.SetSecurityDescriptor(objSecDes,"FILE://" + vPath);}
  11. 디자인 모드로 다시 전환 하려면 Form1.cs [디자인] 탭을 클릭 합니다.
  12. Button1을 두 번 클릭 합니다. Button1_Click 이벤트의 코드를 다음 코드로 대체 합니다.
    private void button1_Click(object sender, System.EventArgs e){try {// Set <Domain> to your domain name.// Set <UserName> to the user account.SetPermissions("C:\\Test", "<Domain>\\<UserName>");MessageBox.Show("Full Access control granted.");}catch (Exception ex){MessageBox.Show(ex.Message);}}
    참고:< 도메인 > 도메인 이름으로 대체 합니다. < 이름 > 사용 권한을 부여할 사용자의 이름을 바꿉니다.
  13. 빌드 메뉴에서 솔루션 빌드를 클릭 합니다.

샘플 응용 프로그램을 테스트 합니다.

  1. C 드라이브의 루트 폴더에 폴더를 만듭니다. 테스트 폴더를 이름을 지정 합니다.
  2. Windows 탐색기에서 Test폴더를 마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭 합니다.
  3. 테스트 속성 대화 상자에서 보안 탭을 클릭 합니다.
  4. 이 테스트를 실행 중인 도메인 계정을 선택 합니다. 계정이 목록에 없으면 추가누르고 도메인 계정 목록에 추가 합니다.
  5. 사용 권한해당이 사용자에 대 한 테스트 폴더에 대 한 사용 권한을 제한 하려면모든 권한 확인란 선택을 취소 합니다. 그런 다음 확인을 클릭 합니다.
  6. NTFSPermission.exe 응용 프로그램을 실행 합니다. 기본적으로Form1 이 표시 됩니다.
  7. Button1을 클릭 합니다. 다음과 같은 메시지가 나타납니다.
    모든 액세스 권한 부여
  8. 메시지 상자를 닫으려면 확인 을 클릭 합니다.
  9. 응용 프로그램을 끝내려면 폼을 닫습니다.
  10. Windows 탐색기에서 C:\ 폴더를 엽니다.
  11. Test 폴더를 마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭 합니다.
  12. 테스트 속성 대화 상자에서 보안 탭을 클릭 합니다.
  13. 이 테스트를 실행 합니다.를 누른 다음 테스트 폴더에 사용 권한을 도메인 계정을 선택 합니다.
지정된 된 사용자 Test 폴더에 모든 권한을 부여 되었습니다.

참조


자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료에 있는 문서를 참조하십시오.
279682 ADsSecurity.dll을 사용 하 여 NTFS 폴더에 액세스 제어 항목을 추가 하는 방법
266461 ADSI를 사용 하 여 자동 상속 파일/폴더 사용 권한 설정 방법