Wie programmgesteuert Dateisystem NTFS-Berechtigungen für Ordner mithilfe von Active Directory Service Interfaces in Microsoft Visual C#

Gilt für: Windows Servers

EINFÜHRUNG


Dieser Artikel beschreibt, wie NTFS-Ordnerberechtigungen programmgesteuert mithilfe von Active Directory Service Interfaces (ADSI) in Microsoft Visual C# festgelegt.

Weitere Informationen


Beispielanwendung erstellen

Führen Sie die folgende beispielanwendung müssen Sie die ADsSecurity.dll und die ADsSecurity.dll-Datei installiert. Diese Dateien sind mit dem Software Development Kit (SDK) für Active Directory Service Interfaces 2.5 enthalten. Downloaden des SDK für Active Directory Service Interfaces 2.5 finden Sie auf der folgenden Microsoft-Website:Hinweis Um die beispielanwendung ausführen, benötigen Sie Administratorrechte auf dem Computer. Um die beispielanwendung erstellen, gehen Sie folgendermaßen vor:
  1. Starten Sie Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005.
  2. Klicken Sie im Menü Datei aufneuund klicken Sie dann auf Projekt.
  3. Klicken Sie in Visual C#-Projekteunter VorlagenaufWindows-Anwendung . Hinweis In Visual Studio 2005 wird Visual C#-Projekte in Visual C#geändert.
  4. Geben Sie im Feld NameNTFSPermissionsund klicken Sie dann aufOK.
  5. Fügen Sie ein Button -Steuerelement in das Formular Form1.
  6. Klicken Sie im Menü Projekt auf Verweis hinzufügen.
  7. Klicken Sie auf die Registerkarte COM und klicken Sie die folgenden Elemente:
    • Aktive DS-Typbibliothek
    • Typbibliothek ADsSecurity 2.5
  8. Maustaste auf das Formular Form1 und klicken Sie dann aufCode anzeigen.
  9. Die folgende Anweisung verwenden am Anfang des Quellcodes in das Formular Form1 hinzufügen
    using ADSSECURITYLib;using ActiveDs;
  10. Fügen Sie die folgende Methode zur 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. Klicken Sie auf die Registerkarte Form1.cs [Design] wieder in die Entwurfsansicht wechseln.
  12. Doppelklicken Sie auf button1. Ersetzen desbutton1_Click -Ereignis Codes durch den folgenden 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);}}
    Hinweis Ersetzen Sie < Domäne > den Domänennamen ein. Ersetzen Sie < Benutzername > durch den Namen des Benutzers, der Sie Berechtigungen erteilen möchten.
  13. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

Testen Sie die beispielanwendung

  1. Erstellen Sie einen Ordner im Stammverzeichnis von Laufwerk C. Nennen Sie den Ordner Test.
  2. In Windows Explorer mit der rechten Maustaste in des Ordners Testund dann auf Eigenschaften.
  3. Klicken Sie im Dialogfeld Eigenschaften auf der Registerkarte Sicherheit .
  4. Wählen Sie das Domänenkonto für das dieser Test ausgeführt werden. Wenn das Konto nicht aufgeführt ist, klicken Sie auf Hinzufügen, und fügen Sie das Domänenkonto zur Liste.
  5. Klicken Sie unter BerechtigungenVollzugriff das Kontrollkästchen zum Einschränken der Berechtigungen für den Ordner Test für diesen Benutzer. Klicken Sie dann auf OK.
  6. Die NTFSPermission.exe-Anwendung auszuführen. Form1 wird standardmäßig angezeigt.
  7. Klicken Sie auf button1. Sie erhalten die folgende Meldung angezeigt:
    Zugriff auf Vollzugriff gewährt.
  8. Klicken Sie auf OK , um das Dialogfeld zu schließen.
  9. Schließen Sie das Formular, um die Anwendung zu beenden.
  10. Öffnen Sie in Windows Explorer Ordner C:\ .
  11. Maustaste auf den Ordner Test und klicken Sie dann auf Eigenschaften.
  12. Klicken Sie im Dialogfeld Eigenschaften auf der Registerkarte Sicherheit .
  13. Wählen Sie das Domänenkonto an, für das Sie diesen Test ausführen, und überprüfen Sie die Berechtigungen auf den Ordner Test.
Der angegebene Benutzer hat jetzt Vollzugriff auf den Ordner Test.

Informationsquellen


Klicken Sie für weitere Informationen auf die folgenden Artikelnummern, um die betreffenden Artikel in der Microsoft Knowledge Base anzuzeigen:
279682 wie ADsSecurity.dll verwenden, um einen Eintrag in einem NTFS-Ordner hinzufügen
266461 wie mit ADSI automatische Vererbung von Berechtigungen für Dateien und Ordner festlegen