Компонент TFileListBox Поиск файлов, которых больше нет - PullRequest
2 голосов
/ 19 июля 2011

Я использую Delphi 7 в Windows 7, и у меня есть приложение, которое использует компонент TFileListBox для перебора файлов в каталоге и копирования их в каталог резервного копирования.

Я испытываю странное поведение, при котором TFileListBox обнаруживает файлы, которых нет в каталоге ?? Каталог, из которого я копирую, содержит 75 файлов, но TFileListBox обнаруживает более 100 файлов.

Я изменил настройки своего обозревателя для отображения скрытых / системных файлов, но все еще не вижу, откуда поступают эти дополнительные файлы.

Мне было интересно, играла ли эта Windows 7 Предыдущие версии какую-то роль в этой проблеме, поскольку я вполне уверен, что дополнительные файлы, обнаруживаемые TFileListBox, когда-то находились в этом каталоге, но были удалены ...

Любая помощь по этому вопросу будет принята с благодарностью.

1 Ответ

6 голосов
/ 19 июля 2011

Из приведенных выше комментариев мы выяснили, что проблема связана с виртуальным магазином, который используется при виртуализации вашего приложения. Виртуальный магазин был представлен в Windows Vista как часть перехода к запуску приложений без прав администратора. Эти файлы появляются в виртуальном хранилище, потому что ваше приложение выполняет запись в каталог программных файлов, в который обычные пользователи не имеют прав записи.

Виртуализация была введена, чтобы помочь справиться с устаревшими приложениями, которые не собирались перекомпилировать для учета новых политик Vista. В настоящее время вы просто не должны создавать виртуализированное приложение.

Вы можете отключить виртуализацию, связав манифест приложения с приложением, включающим раздел <requestedExecutionLevel level="asInvoker"/>.

Когда вы сделаете это, вы, несомненно, обнаружите некоторые другие проблемы, поскольку ваше приложение может попытаться записать в каталог программных файлов, в раздел реестра HKLM и т. Д. Хотя эти изменения могут показаться болезненными, они стоит усилий.

...