Finden Sie den Papierkorb auf einem lokalen NTFS-Laufwerk
Bin ich zu schreiben versucht, einige einfache code, wird wieder das Verzeichnis für den Papierkorb auf einem lokalen Laufwerk. Scheint so, als wäre es einfach-sollte ein tausend Antworten bei Google. Noch nicht gefunden, doch 🙁
HABE ich festgestellt, dass FAT-und NTFS-Laufwerke haben unterschiedliche Basis-Namen (RECYCLED und RECYCLER). Ich habe festgestellt, dass 'der' Papierkorb ist ein virtueller Ordner, der kombiniert Sie die Papierkörbe aller Laufwerke auf dem Rechner.
Was ich nicht gefunden habe ist ein Weg, um Laufwerk C: Papierkorb-Verzeichnis-auch auf Vietnamesisch (oder einer anderen nicht-Englisch) Maschine. (Keine Beiträge, die ich finden kann, anzugeben, ob "RECYCLER" wird internationalisiert oder nicht)
Kann jemand mir eine definitive Antwort?
Dank
UPDATE: Bewusst CSIDL_BITBUCKET
und die Funktionen, die Sie verwenden. Von allem, was ich gelesen habe, obwohl es, Punkte zu einem virtuellen Verzeichnis, das die union von allen gelöschten Dateien von diesem Benutzer auf allen Laufwerken. Suchen für den physischen Papierkorb-Verzeichnis (auf meinem Vista-es erscheint C:\$Recycle.Bin soweit ich das sagen kann)
- Siehe diese Frage und diese one zu.
- Sah auf den Artikel verwiesen, die von deinem ersten link. Es verweist einfach CSIDL_BITBUCKET, die sich auf die Benutzer virtuelle Papierkorb-Verzeichnis für die gesamte Maschine, nicht eine pro-drive-Verzeichnis. Das ist das problem mit alles, was ich finden kann, Google - Sie alle Punkte auf dieses virtuelle Verzeichnis.
- Oh, und der zweite posten, der Euch zwingt zu gehen durch alle Verzeichnisse suchen, die passen würden, der Papierkorb ist GUID. Gibt es nicht einen Weg, um den Papierkorb, pro-drive-basis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Raymond Chen hat die Antwort - Wie kann ich feststellen, dass ein Verzeichnis ist wirklich ein Papierkorb?
Verwendung von Raymond Chen Beratung, und jemand anderes die Technik (kann mich nicht erinnern wo ich es gefunden habe) ich eine Funktion, die finden das Papierkorb-Verzeichnis auf einem Laufwerk. Die Funktion durchläuft die Verzeichnisse in das root-Verzeichnis suchen bei hidden und/oder system-Verzeichnisse. Wenn er eine findet, überprüft es, das Kind Unterverzeichnisse auf der Suche nach demjenigen, der CLSID_Recycle Bin.
Beachten Sie, dass ich habe zwei GetFolderCLSID Funktionen unten. Raymond Chen ' s ist das einfacher, aber es funktioniert nicht auf Windows 2000. Die andere Umsetzung ist mehr, scheint aber überall arbeiten.
Rufen wie: CString recycleDir = FindRecycleBinOnDrive(L"C:\");
Ein bisschen spät, aber vielleicht besser spät als nie...
Nach dem Debuggen shell32.dll ich habe festgestellt, dass für jede version von windows den Papierkorb Pfad ist fest und, auch, hängt vom Dateisystem des Laufwerks. Ich habe getestet auf Windows XP, Vista und Windows7:
Let X: das Laufwerk wir wollen den Weg in den Papierkorb und lassen Sie SID die SID des aktuellen Benutzers, dann:
Einen wiki-Artikel stellt die gleichen Fakten:
http://en.wikipedia.org/wiki/Recycle_Bin_%28Windows%29
In Win32, nutzen SHGetSpecialFolderLocation. Pass CSIDL_BITBUCKET als CDIL parameter.