隠されていないディレクトリはエクスプローラーには表示されませんが、それを作成したプログラムはアクセスできます


26

IMAPSizeを使用してメールボックスをバックアップしています。このプロセスは、メールボックスの内容を.emlディスク上のファイルにダンプするだけです。とにかく、最初にバックアップしたメールボックスが期待どおりに表示されます。ただし、次のものはエクスプローラーに表示されず、アドレスバーに入力すると、存在しないことがわかります。

ただし、IMAPSizeはファイルが存在することを主張しています。(操作中に多くのディスク書き込みが実行されていました。)さらに、ディレクトリ Windowsディレクトリダイアログに表示され、GNUツールがインストールされているので表示されますls(ただし、ネイティブでは表示されませんdir)。私はできませんcdディレクトリに、しかしlsそれにアクセスすることができる(そして、実際に、私は期待してディレクトリやファイルがあるように見える)ように見えるん。

リストを表示するコマンドプロンプトウィンドウ

また、タイムスタンプとファイルサイズがと出力でbackup.db異なることに注意してください。dirls -l

要するに、ここで何が起こっているのか、どうすれば修正できるのか!?


1
私が目にする唯一の顕著な違いはls -l、「隠された」ディレクトリとファイルへの特異な数のハードリンクを示していることです...それがなぜなのか、NTFSランドでハードリンクがどのように解釈されるのかさえわかりません。
-Xophmeister

...確認するだけで、コマンドラインからcat(別のGNU coreutil)を使用して、「隠された」ファイルのデータにアクセスできます。ただし、ここでも、ネイティブのWindowsツール(などtype)はファイルを見つけることさえできません。
-Xophmeister

回答:


63

ファイルを作成したプログラムとGNUユーティリティも管理者として実行されていません。

まず、いくつかの歴史。Windows XPの時代には、プログラムの多くは、彼らが常に管理者として実行されるだろう、とのような場所に書きますと仮定C:\Windowsし、C:\Program Files (x86)野生の放棄と。Vistaでは、Microsoftは管理者の数を減らしようとしましたが、標準ユーザーはそれらの場所に書き込むことができません。彼らは、それらの疑わしいプログラムが動作し続けるために必要でした(そうでなければ人々はアップグレードしませんでした)。そこで、彼らはUAC仮想化と呼ばれる魔法の機能を導入しました。

標準ユーザーとして実行されているプログラムは、重要な場所への書き込みが成功したと考えるかもしれませんが、実際には、Windowsはユーザーごとの場所でデータを削除しました。これらのプログラムがディレクトリ内のファイルを検索すると、Windowsはその場所の仮想ストアにファイルがあるかどうかを確認し、ある場合はディレクトリリストに追加します。(レジストリには同等の機能があります。)

Program Files (x86)通常のユーザーとして実行中に、メールプログラムが下の場所に書き込もうとしたようです。書き込みはリダイレクトされたため、実際にはその場所には行きませんでした。Windowsはその幻想を維持しているため、プログラムはそれを見ることができます。エクスプローラーは、オペレーティングシステムに正常に動作していることを通知し、リダイレクトを必要としないため、それを認識しません。コマンドプロンプトのdirコマンドはプログラムではない(単なる機能であるcmd.exe)ため、「知っている」と見なされるため、互換性ファイルは表示されません。ls明らかに、知られていないプログラムなので、互換性ファイルを見ることができます。

ファイルは次の場所にあります。

%LOCALAPPDATA%\VirtualStore\Program Files (x86)\IMAPSize\backup

を突っ込んでいる間VirtualStore、あなたはどのプログラムが行儀が良くなく、仮想化のセーフティネットを必要としているかに驚くかもしれません。

リダイレクトを停止する場合は、管理者としてプログラムを実行するか、管理者権限なしで実際に書き込み可能な場所にバックアップを保存します。


16
そして、ここで私はWindowsを知っていると思った。これはよくできたエイプリルフールのジョークか、今日私は重要なことを学びました。ありがとう、@ Ben N!
アガンジュ

3
@Aganju数か月前、WindowsユーザーがWinSCPのキーペアを作成するのを手伝わなければなりませんでした。そして、それらは質問で説明されたのとほとんど同じ方法で見えなくなりました。当時、私はこの答えで与えられた説明とほとんど同じ説明を仮定しました。代わりにユーザーのホームディレクトリの下にファイルを置くことで問題が解決されたため、仮説を検証することはありませんでした。しかし、少なくともこの答えは私には冗談のようには見えないことを確認できます。
カスペルド

3
まあ私はのろわれます!そこにすべてがあります。意図されていても、それは奇妙な動作です。ファイルシステムエラーが発生したと思いました!...これは、最初のメールボックスバックアップが表示される理由も説明します。プログラムはインストーラーから最初に実行されました管理者権限を持つように昇格したでしょう。一方、「隠された」実行はローカルユーザーとしてでした。
-Xophmeister

1
@Aganju Vistaをあまり使ったことがないと思います。エクスプローラーで仮想化されたファイルを表示する機能がありました。その問題は数年間十分に一般的だったからです。Win7が登場するまでに、最も広く使用されているソフトウェアは、インストールディレクトリのサブフォルダーに書き込むことができると仮定して停止しました。また、この機能は、Windowsの最新バージョンでは大幅に見えにくくなったり、場合によっては完全に削除されたりしています。
ダン・ニーリー

4
@Xophmeisterそれはトレードオフです。回答で述べたように、Vistaより前は、独自のアプリケーションディレクトリへのソフトウェアの書き込みは恐ろしく一般的でした。これは大規模なセキュリティホールであるため、解決する必要がありました。代替手段は、1)書き込みを禁止し、すべてのアプリケーションを破壊する、2)仮想化を使用してファイルを安全な場所に保存することでした。1)MicrosoftのSOPに対して明らかに容認できず、非常に強く、最終的には、以前と同じように管理者の下ですべてを実行するすべての人につながるだけです。紛らわしいかもしれませんが、それでもおそらく最良の選択肢です。危険なディレクトリには書き込まないでください。
ルアーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.