`:Zone.Identifier` 文件不断出现在 Windows XP 虚拟机中

Jon*_*eno 1 windows linux windows-xp virtual-machine shared-folders

我有一台 Windows XP Home Edition 客户机和一台 Linux Mint 13 主机。我使用 VirtualBox 并且该~/Public目录与来宾共享。有时我会在来宾系统上使用 IE 下载文件(直到我获得更好的 Windows 浏览器)。

所有下载的文件都在L:\驱动器(~/Public目录)中。下载完成后,Windows 资源管理器会:Zone.Identifier为我下载的每个文件添加一个文件。当我在来宾上(在驱动器上L:\)解压缩下载的 ZIP 存档时,Windows 会:Zone.Identifier为解压缩目录中的每个文件创建一个文件。如果我使用主机将文件移动到~/Public目录,甚至会发生这种情况。

共享~/Public目录位于 ext4 分区上,并且冒号字符在 Windows 中的文件名中应该是非法的,但在 ext4 分区上则不然。有什么办法可以阻止 Windows 将所有这些垃圾放在我的文件系统上?(我可能需要创建一个 shell 脚本来在 Windows 操作后进行清理。)

这是我在 Windows 资源管理器中看到的: Windows 上我的公共目录中的垃圾

顺便说一下,如果我运行的是 Mac OS X 主机(其中冒号是非法文件名字符),这将更加可怕。

Dar*_*oid 5

我敢打赌,这些用于跟踪文件的来源(当您尝试打开下载的 .zip 或 .exe 时,Windows 会弹出“您确定要打开这个”对话框)。

我的记忆不是 100%,但如果我没记错的话:,Windows 文件名中是禁止的,因为它用于文件上的备用流。您拥有保存实际内容的主数据流,但每个文件都可以具有包含元数据的命名备用流:C:\File\Path\Filename.exe:AlternateStreamName

如果底层文件系统是 EXT4,那么我怀疑 IE/WE 正在尝试写入这样的文件并期望它是备用流,而驱动L:\器的文件系统驱动程序只是将其创建为常规文件。

(顺便说一句,:在 NTFS 上并没有被禁止,只是 Windows 资源管理器和大多数应用程序使用的 Win32 API(因为它们将其重新用于备用流)。NTFS 支持文件名中除NUL( \0000) 或斜杠 ( /)之外的任何字符,以及 HFS Plus (Mac OS X) 支持任何字符,除了NUL(但这可能会受到工具或操作系统的进一步限制,具体取决于它的需要))


Ansgar Wiechers 在下面的评论中提供了答案:

创作ZoneIdentifier流可以通过设置策略来禁用Do not preserve zone information in file attachmentsenabled。该政策位于 下User Configuration\Administrative Templates\Windows Components\Attachment Manager

对于残缺的 Windows 版本,创建一个值为in的DWORD注册表值应该具有相同的效果。SaveZoneInformation1[HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]

  • 可以通过将策略“不保留文件附件中的区域信息”设置为“已启用”来禁用“ZoneIdentifier”流的创建。该策略位于“用户配置\管理模板\Windows 组件\附件管理器”下。对于受损的 Windows 版本,在“[HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]”中创建值为“1”的 DWORD 注册表值“SaveZoneInformation”应该具有相同的效果。 (2认同)