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

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

我有一个 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 主机(其中冒号是非法文件名字符),这会更加可怕。

答案1

我敢打赌,这些是用来追踪文件的来源的(当您尝试打开下载的.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 attachments为 来禁用流创建enabled。该策略位于 下User Configuration\Administrative Templates\Windows Components\Attachment Manager

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

相关内容