web-dev-qa-db-ja.com

ファイルは存在しますが、他のプログラムからは表示されません

.EXEファイルがc:\ windows\system32(Win7)にインストールされていますが、これはWindowsアプリケーション(エクスプローラー、cmdなど)以外の他のプログラムでは表示されません。

どのcmd端末からでも実行できます。ただし、他のプログラムはこのファイルを開くことができません。 OpenFileDialogsにリストすることすらできません。また、このプログラムをPython os.system()から実行してみたところ、「ファイルが見つかりません」というメッセージが表示されました。

私は通常、同じディレクトリにある他のプログラムを表示して実行できます(例:PING.exe)

私は本当にファイルがそこにあると確信しています。この問題は、すべてWindows7を実行している3台の異なるコンピューターで発生しました。

この場合のファイルは、Microsoft製のTFTP.exeです。

次の画像は、この状態を示しています。1-ファイルがc:\ windows\system32に存在することを示すWindowsエクスプローラー2-depends.exeの[ファイルを開く]ダイアログで、同じディレクトリにあるファイルを確認できません

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
Alex

それは実際には存在しないかもしれません、Windowsはただシミュレートそれが存在することをあなたに示します(そしてWindowsだけがそれを知っているので、他のプログラムはそれを見つけません)。

C:\Users\YourUserName\AppData\Local\VirtualStore\...で探してください。

それはあなたの問題を解決するかもしれません。なぜそこにあるのかを理解したい場合は、google ファイルとレジストリの仮想化

一言で言えば、アクセス制御の理由から、Windowsはすべてのプログラムがその領域に書き込むことを許可していません。したがって、古いプログラムneedsがそこに書き込む場合、ファイルは仮想ストレージにリダイレクトされますが、あなたが思っていた場所を継続的にシミュレートします。

2
Aganju

私は最近、これとまったく同じ問題に遭遇し、その理由を見つけました。

64ビットオペレーティングシステムでx86に対してコンパイルされた実行可能ファイルを実行しましたが、ファイルダイアログを開いたり、Directory.GetFiles(でディレクトリ内のファイルを検索したりすることによってではなく、実行可能ファイル内からファイルが見つかりませんでした。 )であり、File.Exists()ではありません。ただし、実行可能ファイルをx64に対してコンパイルすると、以前のすべてのメソッドでファイルが再度見つかりました。

1
Dieter Degrande