Ordnerrechte einstellen

Black_Deal

Mitglied
Hallo

Ich muss da ein Programm schreiben, das mir einen Ordnerbaum durchsucht und im jeden Ordner/Unterordner die Rechte des Owners einstellt.

Das durchsuchen ist ja kein Problem, aber das einstellen der Rechte finde ich nicht heraus wie das funktionieren sollte.

Ich hoffe Ihr könnt mir da ein wenig weiter helfen.

mfg
 

mage

Erfahrenes Mitglied
Ich denke das einfachste wäre es das Komandozeilenprogramm von Microsoft cacls über einen zusammengebauten Shellaufruf ausführen zu lassen,
 

Black_Deal

Mitglied
Ok...
Ich habe mir jetzt "cacls" mal angesehen. Das würde ja funktionieren.
Nur bekomme ich den gesammten befehl nicht auf die reihe. Ich habe ja auch schon was gefunden, aus dem werde ich aber nicht schlau.
 
Zuletzt bearbeitet:

mage

Erfahrenes Mitglied
Wie man einen Shellaufruf macht oder das Tool ?
Cacls ist ein Tool von Microsoft für die Vergabe von Dateibenutzerrechten und wird schon seit NT4 mit ausgeliefert.
Wenn du in die Kommandozeile (DOS-Fenster) den Befehl eingibst bekommst du die Optionen angezeigt.
Damit lassen sich Dateizugriffsrechte von Benutzern oder Benutzergruppen wegnehmen, hinzufügen und verändern.

Für den Befehl hab ich gerade nur was in VB.Net gefunden im VB.NET Namespace
MSDN Shell Function

Den Namespace kannst du dir auch in ein C# Projekt einbinden.
Ich weiss aber nicht, ob das so die sauberste Möglichkeit ist, andere Programme aufzurufen, da laut Dokumentation - unmanged Code ausgeführt wird. Ich denke dort wird nur die Windows API gekapselt.
 
Zuletzt bearbeitet:

Black_Deal

Mitglied
Wie ich den befehl ausführe weis ich ja. Mir geht es in erster linie nur darum, wie ich die Rechte auf den gesammten Ordner legen kann.
Auf ein einziges File, das geht, aber auf den gesammten Ordner?

Code:
CACLS filename [/T] [ /E] [ /C] [/G user : perm] [/R user [...]]
               [/P user : perm [...]] [/D user [...]]

 --cut--

Abbreviations:
   CI - Container Inherit.
        The ACE will be inherited by directories.
   OI - Object Inherit.
        The ACE will be inherited by files.
   IO - Inherit Only.
        The ACE does not apply to the current file/directory.

Hier gibt es ein Abbreviations Namen CI. Wie geht das?
 

mage

Erfahrenes Mitglied
Die richtige Option ist in dem Fall /T, damit kannst du den obersten Ordner angeben und bestimmst das er die Unterordner mit ersetzt.
 

mage

Erfahrenes Mitglied
Auf meinen PC bekomme ich die deutsch Hilfe:
Abkürzungen:
CI - Containervererbung.
Der ACE-Eintrag wird von Verzeichnissen geerbt.
OI - Objektvererbung.
Der ACE-Eintrag wird von Dateien geerbt.
IO - Nur vererben.
Der ACE-Eintrag bezieht sich nicht auf
die aktuelle Datei/das aktuelle Verzeichnis.
 

Black_Deal

Mitglied
Entschuldige bitte wenn ich mich ein weing blöd anstelle, aber ich werde aus den ganzen einfach nicht schlau...

Kann man die Rechte auf einen Ordner Programmtechnisch einstellen oder funktioniert das nur auf die darin befindlichen Datein?

Ich habe jetzt das ganze mal mit den Files probiert, dass ich die Rechte drauf setze, aber das funtzt auch nicht so richtig. Bei einigen Files setzt er die Rechte und bei einigen nicht. Aber egal...
Aber ich denke mal wenn der User nicht die nötigen rechte auf den ordner hat, dann werden ihm die Rechte auf die Files auch nichts helfen wenn er nicht auf den Ordner zugreifen kann. Oder reichen die Rechte auf die Files?

Und wenn es was mit den Ordner gibt, dann währe ich dir sehr verbunden, wenn du mir da ein kleines Beispiel Posten könntest.
 

Neue Beiträge