我在 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,无法在同一目录中看到该文件
答案1
它可能实际上不存在,Windows 只是模拟您知道它在那里(并且只有 Windows 知道,所以其他程序找不到它)。
在 下寻找它C:\Users\YourUserName\AppData\Local\VirtualStore\...
。
这可能会解决你的问题;如果你想了解它为什么在那里,请谷歌搜索文件和注册表虚拟化。
简而言之,出于访问控制的原因,Windows 不允许每个程序都写入该区域,因此如果一个较旧的程序需求写入时,它会将文件重定向到您的虚拟存储,但会不断模拟您认为它所在的位置。
答案2
我最近遇到了同样的问题并找到了原因。
我在 64 位操作系统上运行了针对 x86 编译的可执行文件,确实无法在可执行文件中找到该文件,打开文件对话框也找不到,使用 Directory.GetFiles() 在目录中查找文件也找不到,使用 File.Exists() 也找不到。但是,在针对 x64 编译可执行文件时,使用之前的所有方法都可以再次找到该文件。