5k Aufrufe
Gefragt in Windows 7 von the_incapable Einsteiger_in (15 Punkte)
Ich habe ein seltsames Phänomen beobachtet, nämlich dass es in Windows 7(ich habe pro 64-bit) unter bestimmten umständen möglich ist, dass in dem selben Ordner 2 Dateien mit dem identischen Namen existieren können.

Ich konnte das jetzt schon mehrmals replizieren. Dazu habe ich mit TextPad 5.2.0 eine Datei in einen Ordner gespeichert der Administratorrechte erfordert ( im Benutzerverzeichnis tritt der Effekt nicht auf). Eine andere Datei konnte ich dann ohne Warnungen einfach in diesen Ordner kopieren.
Beide Dateien existieren jetzt nebeneinander und werden auch komischerweise von unterschiedlichen Programmen geöffnet, d.h. ein bestimmtes Programm öffnet immer eine der beiden Dateien.
Das ganze sieht in der Eingabeaufforderung z.B.so aus:

C:\Program Files>type Dokument1.txt
Bla blub
C:\Program Files>cat Dokument1.txt
anderer Text

wobei cat der Unixbefehl aus den UnxUtils ist unxutils.sourceforge.net/

Ich habe das Dateisystem schon ohne Ergebnisse komplett auf Fehler prüfen lassen.

Kann jemand dieses Verhalten/Effekt erklären oder replizieren???

5 Antworten

0 Punkte
Beantwortet von Experte (6.4k Punkte)
Das ist ein Feature von Windows 7. So können verschiedene Programme verschiedene Versionen von Bibliotheken (z.B. *.dll) benutzen. Ist also nichts schlimmes (abgesehen von dem gravierenden dll-"Bug" in Windows etc.).
0 Punkte
Beantwortet von the_incapable Einsteiger_in (15 Punkte)
Ist dieses Feature irgendwo dokumentiert?

Ich bin mir auch nicht sicher ob wir über die selbe Sache reden, denn ich kann immer nur eine Datei sehen (im Explorer sowie mit "dir" bzw. "ls"). Die eine Datei von beiden wird vom Explorer und "dir" gar nicht angezeigt, sondern nur von "ls"(UnxUtils). Diese eine schwer zu findende Datei wird auch nicht von den "Vista/Windows7-Dialogboxen"(www.itproblemchild.com/wp-content/attachments/2009/07/windows-7-file-open.png - z.B. von Notepad) angezeigt sondern nur von den XP-Öffnen/Speichern-Dialogfenstern(i.msdn.microsoft.com/dynimg/IC72590.png z.B. bei Textpad).
0 Punkte
Beantwortet von Experte (6.4k Punkte)
Ist dieses Feature irgendwo dokumentiert?

Ja, garantiert... Ich habe es aus einer der letzten 5-8 c't-Ausgaben. Da müsste ich jetzt erstmal suchen...vielleicht später.

Das Phänomen ist dasselbe wie das mit den Programmpfaden der 32-bit- und 64-bit-Anwendungen. Die (wenn ich mich recht erinnere) sieht man ja auch innerhalb des Programme-Ordners, obwohl sie da eigentlich nicht sind. Das wird innerhalb von Windows umgebogen, wohl mit symbolischen Links oder so. Da (in der c't) stand auch dabei, dass wenn man bestimmte Aktionen durchführen will, man über die Kommandozeile gehen muss, damit man die Unterschiede sieht.
0 Punkte
Beantwortet von Experte (6.4k Punkte)
Hi,

ich bin mir auch nicht mehr ganz sicher, ob wir über das Gleiche reden.
Bei nochmaligem durchlesen Deiner Frage scheinst Du von beliebigen Dateien, die Du auch selber erstellen kannst, zu sprechen (also keine systemrelevanten Dateien, sondern Anwender-Dateien).
Ich habe zwar den Artikel wiedergefunden (Heft 11) und da steht auch teilweise etwas drin, das bezieht sich aber mehr auf 32- bzw. 64-bit-Programme und Treiber. Nach dem Überfliegen der 13 Seiten der verschiedenen Artikel, habe ich auch das mit den unterschiedlichen Dateiversionen nicht mehr gefunden, das muss noch irgendwo anders gestanden haben (falls mir einfällt wo, sehe ich nochmal nach).
Dabei frage ich mich, ob es einen Unterschied zwischen Dateien gibt, die mit einem 32-bit oder denen, die mit einem 64-bit-Programm erzeugt wurden. Ich kann das hier mangels 64-bit nicht vernünftig testen.
Jedenfalls sorgt eine Emulationsschicht (Windows-32-on-Windows-64 WOW64) in Windows dafür, dass bestimmte Dateizugriffe (in bestimmten Ordnern wie Programme -> Programme (x86), System32 -> SysWOW64) umgeleitet werden (keine symbolischen Links, wie oben vermutet), wenn mit bestimmten Programmen (32- oder 64-bit) darauf zugegriffen wird. Die Umleitung passiert auch mit Einträgen in der Registry beim Aufruf von z.B. COM-Bibliotheken.

Du schreibst ja, dass das Phänomen nur in bestimmten Ordnern auftritt, in Deinem Beispiel der Programme-Ordner (bzw. Program Files) das ist halt genau einer der Ordner wo diese Emulationsschicht greift, vielleicht hat das was damit zu tun. Ist aber nur eine Vermutung.
0 Punkte
Beantwortet von the_incapable Einsteiger_in (15 Punkte)
Du hast Recht, es so dass die 32-Bit Programme die Dateien in extra Ordnern speichern wenn man keine Zugriffsrechte hat. Die Dateien liegen also in wirklichkeit in verschiedenen 2 Ordnern. Die 64-Bit Programme speichern in meinem Fall nach "C:\Program Files\" wenn sie Schreibrechte haben. Und die 32-Bit Programme speichern nach "C:\Users\MYUSERNAME\AppData\Local\VirtualStore\Program Files". Windows lässt es dann im Nachhinein so aussehen als ob beide Datein im selben Ordner liegen würden.

Hier mehr dazu:
http://blog.m-ri.de/index.php/2007/02/10/der-virtualstore-und-seine-schattenseiten/

Dort ist auch das Problem beschrieben warum ich auf diese Vorgehensweise von Windows aufmerksam wurde. Ich hatte nämlich eine Datei in "C:\Program Files\" verändert aber es zeigte keine Wirkung.

Vielen Dank für die Tips.
...