Il file esiste ma non è visibile da altri programmi [duplicato]


1

Questa domanda ha già una risposta qui:

Ho un file .EXE installato su c: \ windows \ system32 (Win7) che non è visibile per altri programmi tranne che per le applicazioni Windows (Explorer, cmd, ecc.)

Posso eseguirlo da qualsiasi terminale cmd. Tuttavia, altri programmi non possono aprire questo file. Non possono nemmeno elencarlo sui loro OpenFileDialogs. Ho anche provato a eseguire questo programma da Python os.system () e ho ottenuto un "File non trovato".

Normalmente posso vedere ed eseguire altri programmi che si trovano nella stessa directory (ad es .: PING.exe)

Sono davvero sicuro che il file ci sia. Questo problema si è verificato su 3 computer diversi, tutti con Windows 7.

Il file, in questo caso, è TFTP.exe, realizzato da Microsoft.

Le seguenti immagini mostrano questa condizione: 1 - Windows Explorer che mostra il file esiste su c: \ windows \ system32 2 - La finestra di dialogo Apri file, da depends.exe, non può vedere il file nella stessa directory

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

Risposte:


2

Potrebbe non essere davvero lì, solo Windows Simula tu che è lì (e solo Windows lo sa, quindi altri programmi non lo trovano).

Cercalo sotto C:\Users\YourUserName\AppData\Local\VirtualStore\....

Questo potrebbe risolvere il tuo problema; se vuoi capire perché è lì, google Virtualizzazione di file e registro .

In poche parole, per motivi di controllo dell'accesso, Windows non consente solo a ogni programma di scrivere in quell'area, quindi se un programma precedente esigenze per scrivere lì, reindirizza il file alla memoria virtuale, ma simula continuamente che è dove pensavate di essere.


1

Di recente mi sono imbattuto in questo stesso problema e ho trovato il motivo per cui.

Ho eseguito il mio eseguibile che è compilato su x86 su un sistema operativo a 64 bit e infatti il ​​file non si trovava da nessuna parte all'interno del mio eseguibile, non aprendo una finestra di dialogo, non cercando il file nella directory con Directory.GetFiles ( ) e non con File.Exists (). Tuttavia durante la compilazione del mio eseguibile contro x64 il file è stato trovato di nuovo con tutti i metodi precedenti.


1
Più specificamente, quando un programma a 32 bit tenta di accedere System32 viene reindirizzato a SysWOW64 per motivi di compatibilità Per raggiungere il 'reale' System32 o hai bisogno di un programma a 64 bit o di un accesso Sysnative (che indirizza al reale System32 in un programma a 32 bit).
Bob
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.