Warum präsentiert Windows 7 bizarr zwei Versionen derselben Datei?

348
Jez

Ich bin über etwas sehr bizarres Verhalten von Windows 7 gestolpert (es kann auch für spätere Versionen von Windows gelten, ich teste jedoch unter Win7), und zwar für Dateien an bestimmten Speicherorten. Ich kann anscheinend keine Informationen finden Ich habe mich gefragt, ob jemand, der sich mit Windows-Internals auskennt, mir das erklären könnte.

Im Grunde zeigt sich dieses Verhalten für Dateien in bestimmten Verzeichnissen. Ich bin nicht sicher, welche genau sind, aber es scheint einige Verzeichnisse in zu enthalten Program Files (x86); zu Testzwecken habe ich das Installationsverzeichnis für Europa Universalis 3 verwendet Program Files (x86)\Paradox Interactive\Europa Universalis III.

Dieses Verhalten gilt für Dateien, die sich bereits im Verzeichnis befinden. Um eine saubere, reproduzierbare Demonstration zu erstellen, habe ich mit dem Erstellen einer Datei text.txtauf dem Desktop begonnen. Die Datei enthielt den Text:

Hello world! 

Ich verwende EditPad Lite 5.4.0 gerne für meinen Haupttexteditor (ja, ich weiß, es ist alt, aber ich habe mich daran gewöhnt), aber ich habe auch Vim für Windows 8.0.586 installiert. Wenn ich die Datei in einem der beiden Ordner öffne, sehe ich denselben Text, und wenn ich den Text in einem der beiden Ordner bearbeite, sehen beide Programme denselben bearbeiteten Text. So weit, ist es gut.

Ich kopiere die Datei in Program Files (x86)\Paradox Interactive\Europa Universalis IIIund erhalte eine Aufforderung für den Administratorzugriff, um die Datei kopieren zu können, was ich zulasse. Hier beginnt die Komik. Ich öffne die kopierte Datei in EditPad Lite, füge Text hinzu und speichere (Datei wird nicht als schreibgeschützt angezeigt):

Hello world! Edited with EditPad Lite. 

Ich öffne dann die Datei mit Vim und Vim zeigt die ALTE Version der Datei:

Hello world! 

Ich versuche zu bearbeiten und zu speichern, aber Vim sieht diese Datei als schreibgeschützt! Also öffne ich mit Vim als Administrator, bearbeite die Datei und speichere:

Hello world! Edited with Vim. 

Wenn ich die Datei erneut mit EditPad Lite öffne, sehe ich die EditPad-Version der Datei! Jetzt haben wir 2 Versionen der Datei, die ich "EditPad-Version" und "Vim-Version" nennen werde.

"EditPad" -Version (ist NICHT schreibgeschützt):

Hello world! Edited with EditPad Lite. 

"Vim" -Version (ist schreibgeschützt):

Hello world! Edited with Vim. 

Selbst ein Neustart ändert nichts, daher scheint es sich nicht um eine Art Windows-Zwischenspeicherung zu handeln. Es besteht tatsächlich aus diesen zwei verschiedenen Versionen der Datei auf der Festplatte! Nach weiteren Versuchen stellte ich fest, dass verschiedene Programme auf verschiedene Versionen der Datei zuzugreifen scheinen:

"Vim" -Version der Datei:

  • Vim 8.0.586
  • Vim 8.0.586 als Administrator
  • 7-Zip 16.04 (64-Bit)
  • Windows Explorer
  • Windows 7-Editor

"EditPad" -Version der Datei:

  • EditPad Lite 5.4.0
  • Europa Universalis 3
  • Windows XP Notepad

Was um alles in der Welt macht Windows 7 hier? Warum werden 2 verschiedene Versionen der Datei angezeigt, von denen eine schreibgeschützt ist und die andere nicht? Meine beste Vermutung ist, dass zwei verschiedene Systemaufrufe verwendet werden und Windows 7 den verschiedenen Aufrufen eine andere Version der Datei präsentiert. Oder sehen 64-Bit-Programme eine Version der Datei und 32-Bit-Programme eine andere Version? Kann jemand das erklären und ist dieses Verhalten irgendwo dokumentiert?

1
Anscheinend verwandt: https://superuser.com/questions/384107/why-cant-i-edit-a-program-filesfile-on-windows-7/384116 Mokubai vor 6 Jahren 3
LOL bedankt sich, "File and Registry Virtualization" scheint tatsächlich das zu sein, was diese Verrücktheit verursacht. Oh, die Hacks, die Microsoft aus Gründen der Abwärtskompatibilität eingerichtet hat ... Jez vor 6 Jahren 0
Es gibt zwar eine Sache, die nicht erklärt werden kann: Wenn ich die Datei mit Vim öffne und * nicht * als Administrator ausgeführt werde, sehe ich immer noch die nicht umgeleitete Version der Datei. Warum ist das? Sollte Windows Vim nicht zur Administratorversion umleiten? Jez vor 6 Jahren 0
VIM ist möglicherweise "UAC-fähig" und wird daher nicht abgefangen und umgeleitet. Mokubai vor 6 Jahren 0
Tatsächlich wäre es jedoch sinnvoller, wenn die umgeleitete Version * präsentiert * würde; Dies spiegelt wider, was andere Anwendungen, die nicht als Administrator ausgeführt werden, sehen würden. Jez vor 6 Jahren 0
"Warum werden zwei verschiedene Versionen der Datei angezeigt, eine schreibgeschützt und die andere nicht?" - Sie haben tatsächlich zwei Dateien an zwei verschiedenen Orten. Dies wurde stumm für die Anwendung ausgeführt, da die Anwendung die betreffende Datei nicht ändern kann und sich geändert hat, wie eine Anwendung von Windows zugelassen wird. Dies wurde getan, als Vista veröffentlicht wurde Ramhound vor 6 Jahren 0

0 Antworten auf die Frage