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

时间:2011-07-19 10:19:36

标签: windows delphi vcl file-copying filelist

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

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

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

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

对此的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:6)

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

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

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

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