Ρύθμιση με προγραμματισμό συστήματος αρχείων NTFS δικαιώματα φακέλου, χρησιμοποιώντας τις διασυνδέσεις υπηρεσίας Active Directory σε Microsoft Visual C#

Ισχύει για: Windows Servers

ΕΙΣΑΓΩΓΗ


Αυτό το άρθρο βήμα προς βήμα περιγράφει τον τρόπο μέσω προγραμματισμού να ορίσετε δικαιώματα φακέλου συστήματος αρχείων NTFS, χρησιμοποιώντας Active Directory Service Interfaces (ADSI) στο Microsoft Visual C#.

Περισσότερες πληροφορίες


Δημιουργία του δείγματος εφαρμογής

Για να εκτελέσετε το ακόλουθο δείγμα εφαρμογής, πρέπει να έχετε το αρχείο ADsSecurity.dll και το αρχείο ADsSecurity.dll που είναι εγκατεστημένο. Αυτά τα αρχεία περιλαμβάνονται με το Κιτ ανάπτυξης λογισμικού (SDK) για ενεργό 2.5 διασυνδέσεις υπηρεσίας καταλόγου. Για να λάβετε το SDK για ενεργό 2.5 διασυνδέσεις υπηρεσίας καταλόγου, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:Σημείωση Για να εκτελέσετε το δείγμα εφαρμογής, πρέπει να έχετε πιστοποιήσεις διαχειριστή στον υπολογιστή. Για να δημιουργήσετε το δείγμα εφαρμογής, ακολουθήστε τα εξής βήματα:
  1. Ξεκινήστε το Microsoft Visual Studio .NET ή Microsoft Visual Studio 2005.
  2. Στο μενού αρχείο , κάντε κλικ στην επιλογήΔημιουργίακαι, στη συνέχεια, κάντε κλικ στο έργο.
  3. Σε Visual C# έργα, κάντε κλικ στο κουμπίΕφαρμογή των Windows στην περιοχή πρότυπα. Σημείωση Στο Visual Studio 2005, Visual C# έργα αλλάζει σε Visual C#.
  4. Στο πλαίσιο όνομα , πληκτρολογήστεNTFSPermissionsκαι, στη συνέχεια, κάντε κλικ στο κουμπίOK.
  5. Προσθέστε ένα στοιχείο ελέγχου κουμπιού στη φόρμα Form1.
  6. Στο μενού ' έργο ', κάντε κλικ στο κουμπί Προσθήκη αναφοράς.
  7. Κάντε κλικ στην καρτέλα COM , κάντε κλικ για να επιλέξτε τα ακόλουθα στοιχεία και, στη συνέχεια, κάντε κλικ στο κουμπί OK:
    • Ενεργό 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, κάντε δεξιό κλικ στο φάκελο δοκιμήςκαι στη συνέχεια κάντε κλικ στο κουμπί Ιδιότητες.
  3. Στο παράθυρο διαλόγου Ιδιότητες δοκιμής , κάντε κλικ στην καρτέλα ασφάλεια .
  4. Επιλέξτε το λογαριασμό τομέα για τον οποίο εκτελείται η δοκιμή. Εάν ο λογαριασμός δεν υπάρχει στη λίστα, κάντε κλικ στο κουμπί Προσθήκηκαι, στη συνέχεια, προσθέστε το λογαριασμό τομέα στη λίστα.
  5. Στην περιοχή δικαιώματα, κάντε κλικ για να καταργήσετε το πλαίσιο ελέγχου "Πλήρης έλεγχος " για να περιορίσετε τα δικαιώματα για το φάκελο δοκιμής για αυτόν το χρήστη. Στη συνέχεια, κάντε κλικ στο κουμπί " OK".
  6. Εκτελέστε την εφαρμογή NTFSPermission.exe. Από προεπιλογή, εμφανίζεταιForm1 .
  7. Κάντε κλικ στο κουμπί button1. Λαμβάνετε το ακόλουθο μήνυμα:
    Παρέχεται πλήρης έλεγχος πρόσβασης.
  8. Κάντε κλικ στο κουμπί OK για να κλείσετε το πλαίσιο μηνύματος.
  9. Κλείστε τη φόρμα για να τερματίσετε την εφαρμογή.
  10. Στην Εξερεύνηση των Windows, ανοίξτε το φάκελο C:\ .
  11. Κάντε δεξιό κλικ στο φάκελο δοκιμής και στη συνέχεια κάντε κλικ στο κουμπί Ιδιότητες.
  12. Στο παράθυρο διαλόγου Ιδιότητες δοκιμής , κάντε κλικ στην καρτέλα ασφάλεια .
  13. Επιλέξτε το λογαριασμό τομέα για τον οποίο θα εκτελείται η δοκιμή και στη συνέχεια επαληθεύστε τα δικαιώματα για το φάκελο δοκιμής.
Τώρα, ο καθορισμένος χρήστης έχει δικαιώματα πλήρους ελέγχου για το φάκελο δοκιμής.

Αναφορές


Για περισσότερες πληροφορίες, κάντε κλικ στους αριθμούς των άρθρων παρακάτω, για να προβάλετε τα άρθρα της Γνωσιακής Βάσης της Microsoft:
279682 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση ADsSecurity.dll για να προσθέσετε μια καταχώρηση ελέγχου πρόσβασης σε φάκελο NTFS
266461 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση ADSI για να ορίσετε την αυτόματη μεταβίβαση των δικαιωμάτων αρχείου/φακέλου