我有一个 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 资源管理器中看到的内容:
顺便说一句,如果我运行的是 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
值应该具有相同的效果。SaveZoneInformation
1
[HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]