Icacls u takeown Berechtigungen Besitzer auf Unterordner vererben
Hallo,
ich möchte den Besitz und die Berechtigungen von einem Ordner auf seine Unterordner "kopieren".
mit takeown und icacls.
im Vb Skript sieht das ungefähr so aus:
Process.Start("C:\Windows\System32\cmd.exe", "/k takeown /F """ & pfad & """")
Process.Start("C:\Windows\System32\cmd.exe", "/k icacls " & pfad & " /inheritance:r /grant:r Admin: (IO)(OI)(CI)F /t)
Der Zugriff wird trotzdem verweigert.
Ich habe mich auch noch mal über die cmd Hilfe zu icacls und takeown belesen, aber ich bekomme nicht die Berechtigung, Rechte zu ändern, für die jeweiligen Unterordner.
Hat jemand eine Idee?
Danke
ich möchte den Besitz und die Berechtigungen von einem Ordner auf seine Unterordner "kopieren".
mit takeown und icacls.
im Vb Skript sieht das ungefähr so aus:
Process.Start("C:\Windows\System32\cmd.exe", "/k takeown /F """ & pfad & """")
Process.Start("C:\Windows\System32\cmd.exe", "/k icacls " & pfad & " /inheritance:r /grant:r Admin: (IO)(OI)(CI)F /t)
Der Zugriff wird trotzdem verweigert.
Ich habe mich auch noch mal über die cmd Hilfe zu icacls und takeown belesen, aber ich bekomme nicht die Berechtigung, Rechte zu ändern, für die jeweiligen Unterordner.
Hat jemand eine Idee?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 373250
Url: https://administrator.de/forum/icacls-u-takeown-berechtigungen-besitzer-auf-unterordner-vererben-373250.html
Ausgedruckt am: 22.04.2025 um 05:04 Uhr
11 Kommentare
Neuester Kommentar

Dann hast du die Hilfe zu den Befehlen nicht vollständig gelesen, erstens brauchst du zusätzlich die Option /D Y (oder bei Deusch ein J) damit Fragen mit Ja beantwortet werden. Zweitens musst du das rekursiv erledigen es fehlt also die Option /R.
Also alles erst mal selbst alles auf der Konsole testen bevor du zu VB übergehst!
Und Grundlagen zu NTFS ACLs wären hier dringend mal nachzuholen!!
Also alles erst mal selbst alles auf der Konsole testen bevor du zu VB übergehst!
Und Grundlagen zu NTFS ACLs wären hier dringend mal nachzuholen!!
Moin,
Gruß
Zitat von @ricson:
Process.Start("C:\Windows\System32\cmd.exe", "/k takeown /F """ & pfad & """")
Process.Start("C:\Windows\System32\cmd.exe", "/k icacls " & pfad & " /inheritance:r /grant:r Admin: (IO)(OI)(CI)F /t)
warum gehst du hier den Umweg über die cmd.exe?Process.Start("C:\Windows\System32\cmd.exe", "/k takeown /F """ & pfad & """")
Process.Start("C:\Windows\System32\cmd.exe", "/k icacls " & pfad & " /inheritance:r /grant:r Admin: (IO)(OI)(CI)F /t)
Gruß

Wundert mich nicht, wer arbeitet schon als der "Administrator" .-) Lach ...
Pfeif dir erst mal die NTFS Grundlagen rein, dann kannst du wieder kommen.
Pfeif dir erst mal die NTFS Grundlagen rein, dann kannst du wieder kommen.
warum gehst du hier den Umweg über die cmd.exe?
Was anderes scheint er offensichtlich noch nicht zu verstehen.
Nun Process.Start() erstellt einen neuen Prozess aber eben asynchron deswegen führst du beide Prozesse zur selben Zeit aus ohne das sie aufeinander warten! Da ist der Grund warum das so in der Art nicht funktionieren kann da beide Befehle ja aufeinander aufbauen und der andere ohne Abschluss des anderen nicht funktioniert. Mach also hinten dran noch ein .WaitForExit() und es klappt
, vorausgesetzt der gerade angemeldete User ist der User "Admin".
Ab und zu die Doku lesen hilft da ungemein wenn man neu in der Materie ist.
Process.Start("C:\Windows\System32\cmd.exe", "/k takeown /F """ & pfad & ci.Name & """ /R /D J").WaitforExit()
Process.Start("C:\Windows\System32\cmd.exe", "/k icacls """ & pfad & ci.Name & """ /grant Admin:(CI)(OI)F /t /c").WaitForExit()
System.IO.Directory.Delete(pfad & ci.Name, True)

Der Delete Vorgang wird unterbrochen,
Heißt was???Funktioniert hier einwandfrei, obwohl ich eher mit /reset /t /c bei icacls arbeite.
Starte die App elevated.

Da fehlen doppelte Anführungszeichen und den Pfad!
Ich bin raus. Keine Ahnung wo das Problem bei dir liegt, hier geht's.
Ich bin raus. Keine Ahnung wo das Problem bei dir liegt, hier geht's.