วิธีการทางโปรแกรมตั้งค่าระบบแฟ้ม NTFS สิทธิ์ของโฟลเดอร์ โดยใช้ส่วนติดต่อบริการไดเรกทอรีที่ใช้งานอยู่ใน Microsoft Visual C#

นำไปใช้กับ: Windows Servers

ข้อความนำ


บทความทีละขั้นตอนนี้อธิบายวิธีการทางโปรแกรมตั้งค่าสิทธิ์ของโฟลเดอร์ระบบแฟ้ม NTFS โดยใช้ Active Directory บริการอินเทอร์เฟซ (ADSI) ใน Microsoft Visual C#

ข้อมูลเพิ่มเติม


สร้างแอพลิเคชันตัวอย่าง

เมื่อต้องการเรียกใช้โปรแกรมประยุกต์ตัวอย่างต่อไปนี้ คุณต้องมีแฟ้ม ADsSecurity.dll และ ADsSecurity.dll แฟ้มติดตั้ง แฟ้มเหล่านี้มีอยู่ในชุดพัฒนาซอฟต์แวร์ (SDK) สำหรับอินเทอร์เฟซ 2.5 บริการไดเรกทอรีที่ใช้งานอยู่ เมื่อต้องการดาวน์โหลด SDK สำหรับ 2.5 อินเทอร์เฟซการบริการไดเรกทอรีที่ใช้งานอยู่ แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:หมายเหตุ เมื่อต้องการเรียกใช้โปรแกรมประยุกต์ตัวอย่าง คุณต้องมีข้อมูลประจำตัวของผู้ดูแลบนคอมพิวเตอร์ เมื่อต้องสร้างแอพลิเคชันตัวอย่าง ให้ทำตามขั้นตอนเหล่านี้:
  1. เริ่มต้น Microsoft Visual Studio .NET หรือ Microsoft Visual Studio 2005
  2. บนเมนูแฟ้มคลิกสร้างแล้ว คลิ กโครงการ
  3. ในโครงการ Visual C#คลิกแอพลิเคชันของ Windowsภายใต้แม่แบบหมายเหตุ ใน Visual Studio 2005โครงการ Visual C#จะเปลี่ยนเป็นVisual C#
  4. ในกล่องชื่อพิมพ์NTFSPermissionsและจากนั้น คลิกตกลง
  5. เพิ่มตัวควบคุมปุ่มไป Form1 แบบฟอร์ม
  6. บนเมนูโครงการคลิกเพิ่มการอ้างอิง
  7. คลิกแท็บCOMคลิกเพื่อเลือกรายการต่อไปนี้ และจากนั้น คลิกตกลง:
    • ไลบรารีชนิด DS ที่ใช้งานอยู่
    • ไลบรารีชนิด ADsSecurity 2.5
  8. คลิกขวาฟอร์มForm1แล้ว คลิ กรหัสของมุมมอง
  9. เพิ่มต่อไปนี้โดยใช้คำสั่งที่ด้านบนของรหัสแหล่งมาในแบบฟอร์ม Form1
    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 Explorer คลิกขวาที่โฟลเดอร์ทดสอบและจากนั้น คลิกคุณสมบัติ
  3. ในกล่องโต้ตอบคุณสมบัติทดสอบคลิกแท็บความปลอดภัย
  4. เลือกบัญชีโดเมนที่คุณกำลังเรียกใช้การทดสอบนี้ ถ้าไม่มีรายการบัญชี คลิกเพิ่มและเพิ่มบัญชีโดเมนในรายการแล้ว
  5. ภายใต้สิทธิ์คลิกเพื่อล้างกล่องกาเครื่องหมายควบคุมทั้งหมดเพื่อจำกัดสิทธิ์บนโฟลเดอร์ทดสอบสำหรับผู้ใช้นี้ แล้ว คลิกตกลง
  6. เรียกใช้แอพลิเคชัน NTFSPermission.exe โดยค่าเริ่มต้นForm1จะปรากฏขึ้น
  7. คลิกbutton1 คุณจะได้รับข้อความต่อไปนี้:
    ควบคุมการเข้าถึงทั้งหมดที่มอบให้
  8. คลิกตกลงเพื่อปิดกล่องข้อความ
  9. ปิดแบบฟอร์มเพื่อออกจากแอพลิเคชัน
  10. ใน Windows Explorer เปิดโฟลเดอร์C:\
  11. คลิกขวาที่โฟลเดอร์ทดสอบและจากนั้น คลิกคุณสมบัติ
  12. ในกล่องโต้ตอบคุณสมบัติทดสอบคลิกแท็บความปลอดภัย
  13. เลือกบัญชีโดเมนที่คุณกำลังรันการทดสอบนี้ และจากนั้น ตรวจสอบสิทธิ์บนโฟลเดอร์ทดสอบ
ผู้ใช้ที่ระบุมีสิทธิ์ควบคุมทั้งหมดในโฟลเดอร์ทดสอบเดี๋ยวนี้

อ้างอิง


สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
279682วิธีใช้ ADsSecurity.dll เพื่อเพิ่มรายการควบคุมการเข้าถึงไปยังโฟลเดอร์ NTFS
266461วิธีใช้ ADSI เพื่อตั้งค่าการสืบทอดอัตโนมัติของสิทธิโฟลเดอร์/แฟ้ม