Eigentümerfenster rekursiv ändern 7

89058
this.lau_

Irgendwie habe ich versehentlich alle Dateien in einem Unterordner auf "Kein Besitzer" gesetzt und ich kann nicht alle Berechtigungen ändern. Ich kann eine von Hand ändern, indem ich den Besitzer und dann die Berechtigungen verändere. Wie kann ich aber den Besitzer aller Dateien ändern? in diesem Verzeichnis auf einmal?

87

6 Antworten auf die Frage

95
this.lau_

Um wirklich fehlerhafte Berechtigungen zu beheben, führen Sie am besten diese beiden Befehle nacheinander aus:

takeown /f "C:\path\to\folder" /r icacls "C:\path\to\folder" /reset /T 

Die erste gibt Ihnen das Eigentum an allen Dateien. Dies reicht jedoch möglicherweise nicht aus, zum Beispiel, wenn für alle Dateien die Lese- / Schreib- / Ausführungsberechtigungen auf "deny" gesetzt sind. Sie besitzen die Dateien, können aber trotzdem nichts damit anfangen.

Führen Sie in diesem Fall den zweiten Befehl aus, um die fehlerhaften Berechtigungen zu beheben.

Ausgezeichneter technischer Rat ... Ihre Lösung war die einzige, die funktioniert hat. Danke noch einmal. carrabino vor 9 Jahren 3
Bester Rat, müssen Sie Takeown und Icacls verwenden. gnac vor 9 Jahren 4
Dadurch werden Probleme behoben, auch wenn ein Berechtigungssatz für die Ablehnung vorliegt bradvido vor 8 Jahren 0
/ Eine Option ist nützlich, wenn Sie "das Eigentum der Administratorengruppe anstelle des aktuellen Inhabers" erteilen möchten. Dazu benötigen Sie Administratorrechte. Möglicherweise muss das Cmd-Fenster mit Strg-Umschalt-Eingabe geöffnet werden. PeterVermont vor 8 Jahren 1
Ich habe den `/ DY`-Parameter zu` takeown` hinzugefügt, damit rekursive Verzeichnisse, für die Sie keine Listenverzeichnis-Berechtigungen haben, automatisch bestätigt werden. Jeroen Wiert Pluimers vor 7 Jahren 3
@JeroenWiertPluimers, obwohl es ein guter Rat ist, habe ich den Schnitt entfernt, da es (dumm genug) ein lokalisierter Parameter ist. Unter englischen Fenstern wird es `/ DY` sein, auf Französisch ein` / DO`, vielleicht auf Spanisch `/ DS` , usw. this.lau_ vor 6 Jahren 2
83
Kez

Verwenden Sie takeownan der Eingabeaufforderung, um den Besitz eines Ordners, aller seiner Unterordner und Dateien rekursiv zu übernehmen:

takeown /f "c:\folder\subfolder" /r 

Dies funktioniert gut, aber wenn Sie Ihre Befehlszeilenkonsole nicht als Administrator ausführen, kann dies für Dateien fehlschlagen, die Sie nicht besitzen.

26
therefromhere

Beachten Sie, dass cacls (seit Windows Vista?) Veraltet ist und Sie zur Verwendung auffordern icacls.

Dieser Befehl setzt die Berechtigungen für einen Ordner rekursiv zurück:

icacls "C:\path\to\folder" /reset /T 
5
John T

Sie können caclsan der Eingabeaufforderung Folgendes verwenden:

cacls "C: \ Pfad \ zum \ Ordner" / E / T / C / G "Administrator": F

Der /TSchalter ermöglicht die rekursive Funktion. Ersetzen Sie Administratorden Benutzer, dem Sie Berechtigungen erteilen möchten.

1
Thesle Williams

Ich hatte Probleme mit Dateien mit sehr langen Pfaden (mehr als 256 Zeichen). Die zwei Befehle

takeown /f "C:\path\to\really_long_folder_name" /r icacls "C:\path\to\really_long_folder_name" /reset /T 

funktionierte bis auf diese Dateien mit wirklich langen Pfaden und Namen. Am Ende habe ich umbenannt

"C:\path\to\really_long_folder_name" 

zu

"C:\path\to\r" 

und dann rennen

takeown /f "C:\path\to\r" /r /D Y icacls "C:\path\to\r" /grant Everyone:(F) /t /c /q 

Danach konnte ich die Ordner etwas sinnvoller umbenennen. takeown's / DY antwortet mit Ja. Für icacls habe ich / grant verwendet, um allen Benutzern uneingeschränkten Zugriff zu gewähren (da ich gerade versuchte, von einem toten PC aus auf Daten auf einer Festplatte zuzugreifen), wobei / t Unterordner und Dateien verarbeitet, / q im stillen Modus ausgeführt wird (hide.) Erfolge) und / c, um Fehler anzuzeigen. Ich wiederholte den Vorgang und benannte die Ordner um, bis alle Dateiberechtigungen erfolgreich aktualisiert wurden.

Hoffentlich hilft dies jemandem, der auf ähnliche Fehler gestoßen ist wie "Fehler beim Aufzählen von Objekten im Containerzugriff wurde verweigert". Fehler, die ich beim Versuch bekam, auf die Daten von einer alten Festplatte zuzugreifen.

0
Joshua Biddle

Vielen Dank @ this.lau_ für den / reset-Tipp. Genau das brauchte ich, um mein Skript abzuschließen, um den Besitz des CSC zu übernehmen und eine Sicherungskopie davon zu erstellen. Nach dem Besitz von C: \ Windows \ CSC neigen die Berechtigungen dazu, sehr uneinheitlich in Bezug auf die Vererbung zu sein - der / reset-Schalter hat dies für mich direkt behoben.

Function Copy-CSCData { $Datetime = Get-Date -Format yyyyMMdd.hhmmss $LogPath = 'PATH TO LOG' $CSCSource = 'C:\Windows\CSC\v2.0.6\namespace' $Dest = 'DESTINATION PATH' $icaclsource = "\\?\" + $CSCSource  $CSCLogfile = "$LogPath\" + "$Datetime" + "_CSCRobocopy.log"  icacls.exe $icaclsource /reset /T icacls.exe $icaclsource /grant :r "Everyone:(OI)(CI)F"  Robocopy $CSCSource $Dest /Copy:DATSO /E /XO /Z /LOG+:$CSCLogfile /V /FP /NP /R:2 /W:2 /XF "~$*","*.tmp" } 

@Thesle Williams - Wenn Sie die $ icaclsource-Variable von oben auschecken, stellen Sie fest, dass ich vor dem Quellpfad "\?" Durch das Hinzufügen dieser Option werden längere Dateinamen akzeptiert. Dies ist auch ein Problem, das ich hatte, aber es wurde behoben! Prost.

Josh

Willkommen bei Super User! Ich möchte Sie nur wissen lassen, dass "Ping" -Benutzer nur in Kommentaren zu Beiträgen funktionieren, nicht * in * den tatsächlichen Beiträgen. Leider können Sie nur Ihre eigenen Beiträge oder Antworten auf Ihre Fragen kommentieren, bis Sie über [50+ Ruf] verfügen (// superuser.com/help/privileges/comment). Weitere Informationen finden Sie unter [Wie funktionieren @ @ antworten?] (// meta.stackexchange.com/q/43019). Beachten Sie, dass Sie in einem Kommentar nicht einfach jemanden anpingen können. Nur der Autor des Beitrags und alle anderen Benutzer, die bereits kommentiert wurden. robinCTS vor 5 Jahren 0