文件存在,但无法从其他程序中看到[重复]


1

这个问题已经在这里有了答案:

我在c:\ windows \ system32(Win7)上安装了.EXE文件,除Windows应用程序(Explorer,cmd等)外,其他程序看不到该文件

我可以从任何cmd终端运行它。但是,其他程序无法打开此文件。他们甚至无法在其OpenFileDialogs上列出它。我还尝试从Python os.system()运行此程序,并得到“找不到文件”。

我通常可以查看和运行位于同一目录中的其他程序(例如:PING.exe)

我真的确定文件在那里。此问题发生在3台不同的计算机上,都运行Windows 7。

在这种情况下,该文件是Microsoft制造的TFTP.exe。

下图显示了这种情况:1-Windows资源管理器,显示文件存在于c:\ windows \ system32 2-打开文件对话框,来自depends.exe,在同一目录下看不到文件

显示文件的Windows资源管理器位于c:\ windows \ system32

从Depends.exe打开文件对话框,无法在同一目录中看到文件

Answers:


2

它可能并没有真正存在,Windows只是模拟您存在它(只有Windows知道,所以其他程序找不到它)。

在下寻找它C:\Users\YourUserName\AppData\Local\VirtualStore\...

那可能会解决您的问题;如果您想了解为什么它存在,请使用google File and Registry Virtualization

简而言之,出于访问控制的原因,Windows不允许仅将每个程序都写入该区域,因此,如果较旧的程序需要在该区域中写入文件,则它将文件重定向到虚拟存储,但是连续进行模拟就是您认为的地方。它是。


1

我最近遇到了同样的问题,并找到了原因。

我运行的可执行文件是在64位操作系统上针对x86编译的,实际上,在我的可执行文件中找不到文件,不是通过打开文件对话框,也不是通过Directory.GetFiles()在目录中查找文件。 ),而不是File.Exists()。但是,当针对x64编译我的可执行文件时,使用先前的所有方法再次找到了该文件。


1
更具体地说,当32位程序尝试访问System32时,SysWOW64出于兼容性原因将其重定向到。要达到“真实”状态,System32您需要一个64位程序或访问权限Sysnative(直接System32在32位程序中访问实数)。
鲍勃·鲍勃,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.