我在 Windows 7 上使用 Delphi 7,并且有一个应用程序使用 TFileListBox 组件来迭代目录中的文件并将它们复制到备份目录。
我遇到一些奇怪的行为,TFileListBox 正在检测目录中不存在的文件?我正在处理的目录包含 75 个文件,但 TFileListBox 检测到超过 100 个文件。
我更改了资源管理器设置以显示隐藏/系统文件,但仍然无法看到这些额外文件的来源。
我想知道 Windows 7 以前的版本是否在这个问题中发挥了作用,因为我相当确定 TFileListBox 正在检测的额外文件曾经一度驻留在该目录中,但已被删除...
对此的任何帮助将不胜感激。
最佳答案
我们从上面的评论中发现,该问题与应用程序虚拟化时使用的虚拟存储有关。虚拟商店是随 Windows Vista 一起引入的,作为无需管理员权限即可运行应用程序的一部分。这些文件出现在虚拟存储中是因为您的应用程序正在写入程序文件目录,而标准用户没有写入权限。
引入虚拟化是为了帮助处理那些不会重新编译以考虑新 Vista 策略的遗留应用程序。如今您根本不应该构建虚拟化应用程序。
您可以通过将应用程序 list 链接到包含 <requestedExecutionLevel level="asInvoker"/>
的应用程序来禁用虚拟化。部分。
当您这样做时,您无疑会发现一些其他问题,因为您的应用程序可能会尝试写入程序文件目录、注册表的 HKLM 部分等。虽然进行这些更改可能看起来很痛苦,但它们是值得付出努力。
关于windows - TFileListBox 组件查找不再存在的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745622/