Het via programmering instellen van NTFS-bestandssysteem machtigingen voor mappen met behulp van Active Directory Service Interfaces in Microsoft Visual C#

Van toepassing: Windows Servers

Inleiding


Dit artikel wordt stapsgewijs beschreven hoe u machtigingen voor NTFS map via programmacode instellen met behulp van Active Directory Service Interfaces (ADSI) in Microsoft Visual C#.

Meer informatie


De voorbeeldtoepassing

De volgende voorbeeldtoepassing uitvoeren, hebt u het bestand ADsSecurity.dll en het bestand ADsSecurity.dll is geïnstalleerd. Deze bestanden zijn opgenomen in de software development kit (SDK) voor Active Directory Service Interfaces 2.5. Downloaden van de SDK voor Active Directory Service Interfaces 2.5, gaat u naar de volgende Microsoft-website:Opmerking Het monster als toepassing wilt uitvoeren, moet u beheerdersreferenties hebben op de computer. Volg deze stappen om de voorbeeldtoepassing:
  1. Start Microsoft Visual Studio .NET of Microsoft Visual Studio 2005.
  2. Klik opNieuwin het menu bestand en klik vervolgens op Project.
  3. In Visual C#-projecten, klikt u opWindows-toepassing onder sjablonen. Opmerking In Visual Studio 2005, wordt Visual C#-projecten gewijzigd in Visual C#.
  4. TypNTFSPermissionsin het vak naam en klik vervolgens opOK.
  5. Een besturingselement opdrachtknop toevoegen aan het formulier Form1.
  6. Klik op Verwijzing toevoegen in het menu Project.
  7. Klik op het tabblad COM en selecteer de volgende items:
    • Actieve DS-typebibliotheek
    • 2.5 ADsSecurity Type Library
  8. Klik met de rechtermuisknop op het formulier Form1 en klik vervolgens opProgrammacode weergeven.
  9. De volgende instructies voor het gebruik van toevoegen aan de bovenkant van de code in het formulier Form1.
    using ADSSECURITYLib;using ActiveDs;
  10. De volgende methode toevoegen aan de klasse 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. Klik op het tabblad Form1.cs [ontwerp-] om over te schakelen naar de ontwerpmodus.
  12. Dubbelklik op button1. De code van de gebeurtenisbutton1_Click vervangen door de volgende code.
    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);}}
    Opmerking < Domein > vervangen door de naam van het domein. < Gebruikersnaam > vervangen door de naam van de gebruiker aan wie u machtigingen wilt toewijzen.
  13. Open het menu Build en klik op Build Solution.

De voorbeeldtoepassing testen

  1. Maak een map in de hoofdmap van station C. Naam van de map Test.
  2. In Windows Verkenner met de rechtermuisknop op de map Testen klik vervolgens op Eigenschappen.
  3. Klik op het tabblad beveiliging in het dialoogvenster Eigenschappen van de Test .
  4. Selecteer de domeinaccount waarvoor u deze test uitvoert. Als de account niet wordt vermeld, klikt u op toevoegenen vervolgens de domeinaccount toevoegen aan de lijst.
  5. Klik onder machtigingen, schakelt u het selectievakjeVolledig beheer om de machtigingen voor de map Test voor deze gebruiker beperken. Klik vervolgens op OK.
  6. Voer de toepassing NTFSPermission.exe. Form1 wordt standaard weergegeven.
  7. Klik op button1. Het volgende bericht wordt weergegeven:
    Volledig beheer van toegang verleend.
  8. Klik op OK om het bericht te sluiten.
  9. Sluit het formulier om de toepassing af te sluiten.
  10. Open in Windows Verkenner de map C:\ .
  11. Klik met de rechtermuisknop op de map Test en klik vervolgens op Eigenschappen.
  12. Klik op het tabblad beveiliging in het dialoogvenster Eigenschappen van de Test .
  13. Selecteer de domeinaccount waarvoor u deze test wordt uitgevoerd en controleert u of de machtigingen voor de map Test.
De opgegeven gebruiker heeft nu de machtiging Volledig beheer op de map Test.

Verwijzingen


Voor meer informatie klikt u op de volgende artikelnummers om de artikelen in de Microsoft Knowledge Base te bekijken:
279682 het gebruik van ADsSecurity.dll een vermelding toevoegen aan een NTFS-map
266461 het gebruik van ADSI automatische overname van machtigingen voor bestanden en mappen instellen