2

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

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

我将资源管理器设置更改为显示隐藏/系统文件,但仍然看不到这些额外文件的来源。

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

对此的任何帮助将不胜感激。

4

1 回答 1

6

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

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

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

当您这样做时,您无疑会发现一些其他问题,因为您的应用程序可能会尝试写入程序文件目录、注册表的 HKLM 部分等。虽然进行这些更改可能看起来很痛苦,但值得付出努力.

于 2011-07-19T12:44:03.030 回答