Ich habe einige Ordner von Malware erstellt, deren Name mit einem Punkt wie C:\a.\
oder C:\b.\
usw. endete .
Ich habe eine Lösung gefunden, die einen solchen Ordner mit einem Befehl entfernen kann, rd /q /s "C:\a.\"
aber wenn ich die Win-API aufrufe RemoveDirectory
, wird sie zurückgegeben ERROR_FILE_NOT_FOUND
.
Und ich frage mich nur, wie man eine Funktion schreibt, um ein solches Verzeichnis zu löschen, danke
Ich teste auf meinem eigenen Windows XP SP3-System wie folgt
Erstellen Sie einen Ordner C:\>mkdir a..\\\
und ich kann nicht doppelklicken, um auf diesen Ordner zuzugreifen. und ich kann mit Befehl entfernen rd /q /s "C:\a.\"
Welche Windows-System-APIs rd /q /s
ruft dieser Befehl auf?
Antworten:
Hier ist eine Lösung für dieses Problem :
quelle
rd
.CMD.exe
im Administratormodus zu arbeiten, wenn dies nicht in der nicht erhöhten Eingabeaufforderung funktioniertLösung: Wenn Sie RemoveDirectory aufrufen, stellen Sie sicher, dass Sie dem Pfad die Zeichenfolge "
\\?\
" voranstellen .Erklärung: Es hat alles mit dem Punkt zu tun. Laut MSDN gibt es bestimmte Fälle, in denen Sie eine Datei oder einen Ordner auf einem NTFS-Volume möglicherweise nicht löschen können, insbesondere wenn der Dateiname im Win32-Namensraum ungültig ist (weshalb Sie die Datei nicht mit dem öffnen können normale Methoden im Windows Explorer).
(Quelle: http://support.microsoft.com/?kbid=320081 )
quelle
rd "\\?\C:\Users\ahmed\Desktop\buggy."
rd
in pwsh ist ein Alias, derremove-item
"\\? \" nicht unterstützt.{IncrementalNumber}.
), und ich war sehr verwirrt darüber, warum meine Datenverarbeitungsskripte fehlgeschlagen sind. Dies ist jetzt sinnvoll, aber es scheint, dass das Verhalten so unerwartet ist, dass es Sicherheitsauswirkungen haben kann, weil Anwendungen Dateinamen falsch behandeln, die in einem Leerzeichen oder Punkt enden.Ich habe dies auf SU gepostet und ich habe beschlossen, es auch hier zu posten. Dies ist der einfachste, schnellste und einfachste Weg, dies zu erreichen. Ich lache jetzt darüber, wie einfach es ist.
Ich selbst hatte WinRaR installiert und beschloss, die Problemumgehung darin zu demonstrieren.
Diese Problemumgehung ist auch mit 7zip möglich.
Eine andere Sache, die ich erwähnen sollte, ist, dass das Problem anscheinend durch die Verwendung des Windows Explorers verursacht wird und jeder andere Dateibrowser (wie der WinRAR-Dateibrowser selbst, FTP-Explorer usw.) diese Dateien wie gewohnt behandelt.
Sie können versuchen, einen beliebigen Dateibrowser zu verwenden und diese Dateien einfach zu löschen, ohne sie zu archivieren! Prost!
quelle
Wenn Sie sehen, ist der Name "a.", Aber der tatsächliche Name ist "a .."
Versuche dies:
Und Sie können versuchen, den Ordner mit diesem Code zu erkunden:
quelle
Wenn Sie Git installiert haben (Sie können ir von hier bekommen ), dann ist es so einfach wie:
rm -rf Foldername./
quelle
rm: cannot remove ‘.bin’: Directory not empty
-rf
Teil um den Ordnerinhalt kümmern.Ich habe " WinRar " verwendet. Ein einfacher RAR-ZIP-Prozessor. Sie können jede Art von Dateinamen-Editor verwenden. Öffnen Sie einfach das Verzeichnis, in dem sich Ihre Datei befindet, in WinRar und wählen Sie Umbenennen, nachdem Sie mit der rechten Maustaste auf die Datei / den Ordner geklickt haben, die bzw. den Sie umbenennen möchten, und geben Sie den neuen Namen ein.
quelle
Versuchen Sie, mit dem Entsperrprogramm Dateien und Ordner zu löschen, die Sie normalerweise nicht löschen können.
quelle
Verwenden Sie den Befehl bash rm von Ubuntu unter Windows 10
quelle
rm: cannot remove ‘.bin’: Directory not empty
Wenn Sie die Dateien behalten möchten, gibt es auch Optionen in Bash.
Sie benötigen das Windows Subsystem für Linux-Paket (ich habe Ubuntu installiert)
um die Dateien zu behalten. Öffnen Sie eine Eingabeaufforderung und fahren Sie mit der CD dahin, wo sich die Datei oder der Ordner befindet. Geben Sie
jetzt "
bash
" ein, um Bash in der Eingabeaufforderung zu öffnen.
mv '[folder or file you want to move]' '[new name (can include path)]'
Geben Sie jetzt ein (es gibt mehr zu mv. Wenn Sie also alle Optionen nachlesen möchten, indem Sie 'man mv' verwenden, wird die Handbuchseite geöffnet (verwenden Sie dann q, um zu bash zurückzukehren).)der Befehl mv kurz für move, aber its hat eine sekundäre Funktion beim Umbenennen von Dingen.
Verwenden Sie auch in Bash 'einfache Anführungszeichen' und kein normales "doppeltes Anführungszeichen", da bash 'einfache Anführungszeichen' erwartet.
Hier ist ein Beispiel. Angenommen, Ihr Ordner hat den Namen "
data 1.
" inc:\users
(der vollständige Pfad zum Fehlerordner lautet alsoc:\users\data 1.
1. Öffnen Sie die Eingabeaufforderung mit einer beliebigen Methode
2. Geben Sie
cd c:\users
3 ein.
bash
Geben Sie nun diese Lade-Bash in den Ordner ein, in dem Sie sich zuvor befanden.4. Geben Sie schließlich
mv 'data 1.' 'data 1'
5 ein. Der Ordner ist jetzt zugänglich und Sie können ihn löschen.
quelle