文件存在但在其他程序中不可见

文件存在但在其他程序中不可见

我在 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,无法看到同一目录中的文件

答案1

它可能实际上不存在,Windows 只是模拟您知道它在那里(并且只有 Windows 知道,所以其他程序找不到它)。

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

这可能会解决你的问题;如果你想了解它为什么在那里,请谷歌搜索文件和注册表虚拟化

简而言之,出于访问控制的原因,Windows 不允许每个程序都写入该区域,因此如果一个较旧的程序需求写入时,它会将文件重定向到您的虚拟存储,但会不断模拟您认为它所在的位置。

答案2

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

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

相关内容