Nicht verstecktes Verzeichnis wird nicht im Explorer angezeigt, aber das Programm, das es erstellt hat, kann darauf zugreifen

2189
Xophmeister

Ich verwende IMAPSize, um meine Mailboxen zu sichern. Der Prozess .emlspeichert lediglich den Inhalt Ihres Postfachs in Dateien auf Ihrer Festplatte. Wie auch immer, das erste Postfach, das ich gesichert habe, erscheint wie erwartet. Der nächste wird jedoch nicht im Explorer angezeigt. Wenn ich ihn in die Adressleiste eingebe, wird mir mitgeteilt, dass er nicht existiert.

IMAPSize besteht jedoch darauf, dass die Dateien vorhanden sind. (Viele Plattenschreib wurde während des Betriebs durchgeführt werden.) Außerdem wird das Verzeichnis nicht erscheinen im Windows - Verzeichnis Dialog und - wie ich GNU - Tools installiert haben - es zeigt in ls(aber nicht in der nativen dir). Ich kann nicht cdin das Verzeichnis einsteigen, kann aber lsscheinbar darauf zugreifen (und tatsächlich scheinen die Verzeichnisse und Dateien dort zu sein, die ich erwarte).

Eingabeaufforderungsfenster mit den Listen

Beachten Sie auch, dass sich Zeitstempel und Dateigröße backup.dbin Ausgabe dirund ls -lAusgabe unterscheiden.

Kurz gesagt: Was ist hier los und wie kann ich das beheben?

26
Der einzige auffällige Unterschied, den ich sehe, ist, dass 'ls -l' eine ungewöhnliche Anzahl von Hardlinks zu den "versteckten" Verzeichnissen und Dateien anzeigt ... Ich weiß nicht, warum das so ist, noch wie ein Hardlink in NTFS- Land. Xophmeister vor 8 Jahren 1
... Nur um zu bestätigen: Ich kann von der Kommandozeile aus mit "cat" (einem anderen GNU coreutil) auf die Daten in den "versteckten" Dateien zugreifen. Allerdings können native Windows-Tools (z. B. `type`) die Datei nicht einmal finden. Xophmeister vor 8 Jahren 0

1 Antwort auf die Frage

63
Ben N

Let me guess: the program that created the file, and also the GNU utilities, are not running as administrator.

First, some history. In the days of Windows XP, lots of programs assumed they would always be run as admin, and would write to places like C:\Windows and C:\Program Files (x86) with wild abandon. With Vista, Microsoft tried to make fewer people admins, but standard users can't write to those places. They needed those dubious programs to keep working (or else people wouldn't upgrade). So, they introduced a magical feature called UAC virtualization.

Programs running as standard users might think their writes to important locations succeeded, but in reality, Windows squirreled the data away in a per-user location. When those programs look for files in a directory, Windows checks to see whether there are any files in that place's virtual store, and if so, it adds them to the directory listing. (There is equivalent functionality for the Registry.)

It looks like your mail program tried to write to a place under Program Files (x86) while running as a normal user. The write was redirected, so it didn't actually go to that place. The program can still see it, because Windows is keeping up the illusion for it. Explorer doesn't see it because it announces to the operating system that it's well-behaved and so doesn't need redirection. The command prompt's dir command isn't a program (it's just a feature of cmd.exe), so it is also considered "in the know" and so is not shown the compatibility files. ls is a program that is, evidently, not in the know, so it gets to see the compatibility files.

You'll find your file here:

%LOCALAPPDATA%\VirtualStore\Program Files (x86)\IMAPSize\backup 

While poking around in VirtualStore, you might be surprised at what programs are not well-behaved and need the virtualization safety net.

If you want to stop the redirection, run the program as administrator, or save your backups in a location that you can actually write to without admin privileges.

Und hier dachte ich, ich kenne Windows. Entweder ist dies ein gelungener Aprilscherz, oder ich habe heute etwas Bedeutsames gelernt. Danke, @Ben N! Aganju vor 8 Jahren 16
@Aganju Vor einigen Monaten musste ich einem Windows-Benutzer helfen, ein Schlüsselpaar für WinSCP zu erstellen. Und diese wurden auf die gleiche Weise unsichtbar wie in der Frage beschrieben. Zu dieser Zeit hatte ich eine Hypothese aufgestellt, die in etwa der gleichen Antwort entsprach wie in dieser Antwort. Ich habe mir nicht die Mühe gemacht, meine Hypothese zu überprüfen, weil das Problem dadurch gelöst wurde, dass die Datei stattdessen im Home-Verzeichnis des Benutzers abgelegt wurde. Aber zumindest kann ich bestätigen, dass mir diese Antwort gar nicht wie ein Scherz erscheint. kasperd vor 8 Jahren 3
Nun, ich werde verdammt sein! Da sind sie alle. Das ist ein * komisches * Verhalten, auch wenn es beabsichtigt ist. Ich dachte, ich hätte einen Dateisystemfehler! ... Dies würde auch erklären, warum meine erste Mailbox-Sicherung angezeigt wird: Das Programm wurde zuerst vom Installationsprogramm ("Wollen Sie jetzt und so ausführen?") Ausgeführt hätte es zu Administratorrechten erhöht; Der "versteckte" Lauf war jedoch der lokale Benutzer. Xophmeister vor 8 Jahren 3
@Aganju Ich vermute mal, du hast Vista noch nie benutzt. Es hatte eine Funktion, um Ihre virtualisierten Dateien im Explorer anzuzeigen. weil das Thema für einige Jahre ausreichend verbreitet war. Zu der Zeit, als Win7 auf den Markt kam, hörte die am häufigsten verwendete Software auf, davon auszugehen, dass sie in Unterordner ihres Installationsverzeichnisses schreiben könnte. Das Feature wurde in den neuesten Windows-Versionen deutlich weniger sichtbar gemacht oder möglicherweise völlig entfernt. Dan Neely vor 8 Jahren 1
@ Xophmeister Es ist ein Kompromiss. Wie in der Antwort erwähnt, war das Schreiben von Software in ein eigenes Anwendungsverzeichnis vor Vista kaum üblich. Dies ist eine massive Sicherheitslücke, also musste es gelöst werden. Die Alternativen waren 1) das Schreiben und Brechen aller Anwendungen zu verhindern, 2) die Virtualisierung zu verwenden, um die Dateien an einem sicheren Ort zu speichern. 1) ist offensichtlich unhaltbar und sehr gegen Microsofts SOP, und am Ende würde es nur dazu führen, dass alle wieder wie zuvor unter Administratorrechten arbeiten. Es kann verwirrend sein, aber es ist wahrscheinlich immer noch die beste Option. Schreiben Sie nicht in gefährliche Verzeichnisse. Luaan vor 8 Jahren 4
Eine ähnliche Umleitung zu Offline-Dateien ist dir / s dein Freund. mckenzm vor 8 Jahren 1
In der Symbolleiste sollte sich tatsächlich eine Schaltfläche "Kompatibilitätsdateien" befinden. Siehe auch: http://superuser.com/a/401979/117590 ([Screenshot] (http://i.stack.imgur.com/wbQCB.jpg)) Bob vor 8 Jahren 0
@ Bob Ja, in Vista gibt es das, aber es scheint später verschwunden zu sein. (Es erscheint nie für mich in Windows 8.) Ben N vor 8 Jahren 0
@BenN Ich sehe es in Win7, vielleicht aber nur in den Ordnern, die tatsächlich umgeleitet werden. IIRC wurde in Win8 entfernt (allerdings nicht sicher). Auf jeden Fall verwendet das OP hier eindeutig Win7, das ist also zumindest eine nützliche Information. Bob vor 8 Jahren 0