Cum se setează prin programare sistemul de fișiere NTFS permisiunile folder utilizând Active Directory Service Interfaces în Microsoft Visual C#

Se aplică la: Windows Servers

INTRODUCERE


Acest articol etapizat descrie cum se setează prin programare permisiunile folder de sistem de fișiere NTFS utilizând Active Directory Service Interfaces (ADSI) în Microsoft Visual C#.

Mai multe informații


Compilarea aplicației eșantion

Pentru a executa aplicația următorul exemplu, trebuie să aveți fișierul ADsSecurity.dll și fișierul ADsSecurity.dll instalat. Aceste fișiere sunt incluse în kitul de dezvoltare software (SDK) pentru Active Directory Service Interfaces 2.5. Pentru a descărca SDK pentru Active Directory Service Interfaces 2.5, vizitați următorul site Web Microsoft:Notă Pentru a executa aplicația de exemplu, trebuie să aveți acreditări de administrator pe computer. Pentru a construi aplicație exemplificativă, urmați acești pași:
  1. Porniți Microsoft Visual Studio .NET sau Microsoft Visual Studio 2005.
  2. Din meniul fișier , faceți clic penouși apoi faceți clic pe proiect.
  3. Visual C# proiecte, faceți clic peAplicație Windows sub șabloane. Notă În Visual Studio 2005, Visual C# proiecte se modifică la Visual C#.
  4. În caseta nume , tastațiNTFSPermissionsși apoi faceți clic peOK.
  5. Adăugați un buton de control pentru a forma Form1.
  6. În meniul de proiect , faceți clic pe Adăugare referință.
  7. Faceți clic pe fila COM , faceți clic pentru a bifa următoarele elemente și apoi faceți clic pe OK:
    • DS bibliotecii activ
    • Bibliotecă de tipuri ADsSecurity 2.5
  8. Faceți clic dreapta pe formă Form1 și apoi faceți clic peVizualizare cod.
  9. Adăugați următoarele declarații folosind la începutul codul sursă în formularul Form1.
    using ADSSECURITYLib;using ActiveDs;
  10. Adăugați următoarea metodă clasa 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. Faceți clic pe fila Form1.cs [Design] pentru a reveni la modul de proiectare.
  12. Faceți dublu clic pe button1. Înlocuiți codul de evenimentebutton1_Click cu următorul cod.
    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);}}
    Notă Înlocuiți < domeniu > cu numele de domeniu. Înlocuiţi < numeutilizator > cu numele utilizatorului căruia doriţi să acorde permisiuni.
  13. În meniul de compilare , faceți clic pe Compilare soluții.

Testați aplicație exemplificativă

  1. Creați un folder în folderul rădăcină al unităţii C. Numele de folder de Test.
  2. În Windows Explorer, faceți clic dreapta pe folderul Test, și apoi faceți clic pe Proprietăți.
  3. În caseta de dialog Proprietăți Test , faceți clic pe fila de Securitate .
  4. Selectați contul de domeniu pentru care se execută acest test. Dacă nu este listat contul, faceți clic pe Adăugareși apoi adăugați contul de domeniu la lista.
  5. Sub permisiuni, faceți clic pentru a debifa caseta de selectareControl total pentru a restricționa permisiunile pentru folderul Test pentru acest utilizator. Apoi, faceți clic pe OK.
  6. Executați aplicația NTFSPermission.exe. În mod implicit, se afișeazăForm1 .
  7. Faceți clic pe button1. Primiți următorul mesaj:
    Access control total acordat.
  8. Faceți clic pe OK pentru a închide caseta de mesaj.
  9. Închideți formularul pentru a închide aplicația.
  10. În Windows Explorer, deschideți folderul C:\ .
  11. Faceți clic dreapta pe folderul Test , și apoi faceți clic pe Proprietăți.
  12. În caseta de dialog Proprietăți Test , faceți clic pe fila de Securitate .
  13. Selectați contul de domeniu pentru care se execută acest test, și apoi verificați dacă permisiunile pentru folderul de testare.
Utilizatorul specificat acum are permisiunile Control total în folderul de testare.

Referințe


Pentru mai multe informații, faceți clic pe următoarele numere de articol pentru a vedea articolele în baza de cunoștințe Microsoft:
279682 cum se utilizează ADsSecurity.dll pentru a adăuga o intrare de control de acces într-un folder NTFS
266461 cum se utilizează ADSI pentru a seta automate moștenirea permisiunilor fișier/folder