2

Windows7でDelphi7を使用していて、TFileListBoxコンポーネントを使用してディレクトリ内のファイルを反復処理し、それらをバックアップディレクトリにコピーするアプリケーションがあります。

TFileListBoxがディレクトリ内に存在しないファイルを検出するという奇妙な動作が発生していますか?対処しているディレクトリには75個のファイルが含まれていますが、TFileListBoxは100個を超えるファイルを検出します。

エクスプローラーの設定を変更して非表示/システムファイルを表示しましたが、これらの余分なファイルがどこから来ているのかがわかりません。

TFileListBoxが検出する余分なファイルは、かつてこのディレクトリに存在していたが削除されたと確信しているため、このWindows7の以前のバージョンがこの問題に関与していたかどうか疑問に思いました...

これに関する助けをいただければ幸いです。

4

1 に答える 1

6

上記のコメントから、問題はアプリケーションが仮想化されているときに使用される仮想ストアに関連していることがわかりました。仮想ストアは、管理者権限なしでアプリケーションを実行するための移行の一環として、Windows Vista で導入されました。これらのファイルが仮想ストアに表示されるのは、アプリケーションが標準ユーザーが書き込み権限を持たないプログラム ファイル ディレクトリに書き込んでいるためです。

仮想化は、新しい Vista ポリシーを考慮して再コンパイルされないレガシー アプリケーションに対処するために導入されました。今日では、仮想化されたアプリケーションを構築するべきではありません。

セクションを含むアプリケーションにアプリケーション マニフェストをリンクすることで、仮想化を無効にすることができます<requestedExecutionLevel level="asInvoker"/>

これを行うと、アプリケーションがプログラム ファイル ディレクトリやレジストリの HKLM セクションなどに書き込みを試みる可能性があるため、他の問題が見つかることは間違いありません。 .

于 2011-07-19T12:44:03.030 に答える