TFileListBox组件查找不再存在的文件

PDM*_*PDM 2 windows delphi vcl file-copying filelist

我在Windows 7上使用Delphi 7并且有一个应用程序使用TFileListBox组件来遍历目录中的文件并将它们复制到备份目录.

我遇到了一些奇怪的行为,TFileListBox正在检测目录中不存在的文件?我正在处理的目录包含75个文件,但TFileListBox检测到超过100个文件.

我更改了我的资源管理器设置以显示隐藏/系统文件,但仍然无法查看这些额外文件的来源.

我想知道这个Windows 7早期版本是否在这个问题中起作用,因为我相当确定TFileListBox检测到的额外文件曾经曾经驻留在这个目录中,但被删除了...

任何有关这方面的帮助将非常感激.

Dav*_*nan 6

我们从上面的评论中得出结论,该问题与您的应用程序虚拟化时使用的虚拟存储有关.虚拟商店随Windows Vista一起推出,作为在没有管理员权限的情况下运行应用程序的一部分.这些文件出现在虚拟存储中,因为您的应用程序正在写入程序文件目录,标准用户没有写入权限.

引入虚拟化是为了帮助处理那些不会被重新编译的遗留应用程序,以考虑新的Vista策略.如今,您根本不应该构建虚拟化应用程序.

您可以通过将应用程序清单链接到包含该<requestedExecutionLevel level="asInvoker"/>部分的应用程序来禁用虚拟化.

执行此操作时,您无疑会发现其他一些问题,因为您的应用程序可能会尝试写入程序文件目录,注册表的HKLM部分等.虽然进行这些更改似乎很痛苦但是值得付出努力.