Die Datei ist vorhanden, aber für andere Programme nicht sichtbar

938
Alex

Ich habe eine .EXE-Datei auf c: \ windows \ system32 (Win7) installiert, die für andere Programme außer für Windows-Anwendungen (Explorer, cmd usw.) nicht sichtbar ist.

Ich kann es von jedem cmd-Terminal ausführen. Andere Programme können diese Datei jedoch nicht öffnen. Sie können es nicht einmal in ihren OpenFileDialogs auflisten. Ich habe auch versucht, dieses Programm von Python os.system () auszuführen, und bekam eine "Datei nicht gefunden".

Ich kann normalerweise andere Programme sehen und ausführen, die sich im selben Verzeichnis befinden (zB: PING.exe).

Ich bin mir wirklich sicher, dass die Datei da ist. Dieses Problem trat auf 3 verschiedenen Computern auf, auf denen alle Windows 7 ausgeführt wurden.

Die Datei ist in diesem Fall TFTP.exe von Microsoft.

Die folgenden Abbildungen zeigen diese Bedingung: 1 - Windows Explorer zeigt an, dass die Datei unter c: \ windows \ system32 vorhanden ist. 2 - Das Dialogfeld "Öffnen" der Datei von Abhaust.exe kann die Datei nicht im selben Verzeichnis sehen

Windows Explorer showing the file exists on c:\windows\system32

Open file dialog, from depends.exe, can't see the file on the same directory

1

2 Antworten auf die Frage

2
Aganju

Es ist möglicherweise nicht wirklich vorhanden, Windows simuliert nur, dass es vorhanden ist (und nur Windows weiß das, sodass andere Programme es nicht finden).

Suchen Sie es unter C:\Users\YourUserName\AppData\Local\VirtualStore\....

Das könnte Ihr Problem lösen. Wenn Sie wissen möchten, warum es dort ist, dann gehen Sie zu Google File and Registry Virtualization .

Auf den Punkt gebracht, für die Zugangskontrolle Gründen, wird Windows erlauben nicht nur jedes Programm in diesem Bereich zu schreiben, so dass, wenn ein älteres Programm muss auf schreibt dort, leitet es die Datei auf dem virtuellen Speicher, sondern simuliert kontinuierlich das ist, wo Sie dachten, es ist.

1
Dieter Degrande

Ich bin vor kurzem auf dieselbe Frage gestoßen und habe den Grund dafür gefunden.

Ich habe meine ausführbare Datei ausgeführt, die gegen x86 auf einem 64-Bit-Betriebssystem kompiliert wurde, und tatsächlich war die Datei nirgends in meiner ausführbaren Datei zu finden, nicht durch Öffnen eines Dateidialogs, nicht durch Suchen der Datei im Verzeichnis mit Directory.GetFiles ( ) und nicht mit File.Exists (). Beim Kompilieren meiner ausführbaren Datei für x64 wurde die Datei jedoch mit allen vorherigen Methoden erneut gefunden.

Wenn ein 32-Bit-Programm versucht, auf "System32" zuzugreifen, wird es aus Kompatibilitätsgründen zu "SysWOW64" umgeleitet. Um das "echte" System32 zu erreichen, benötigen Sie entweder ein 64-Bit-Programm oder greifen Sie auf "Sysnative" zu (das auf das echte "System32" in einem 32-Bit-Programm verweist). Bob vor 6 Jahren 1