标题说明了一切,我正在努力寻找一个合理的答案,为什么这个流存在以及它在 Windows 中用于什么。
答案1
未命名的数据流有什么用处?
除了其他答案中的解释之外,还有几个主流的 Microsoft 程序使用数据流。
IE浏览器:
您是否曾经从互联网上下载过可执行文件,然后在运行它时收到警告?这是怎么回事?
当文件下载后,IE 会在其上附加一个 ADS。该流将存储一个标签,告诉 Windows 文件是从哪个区域下载的。
看起来熟悉?
因此,利用我迄今为止学到的知识,我可以查看从互联网上下载的文件之一,看看其中是否有 ADS。
是的,它被称为“Zone.Identifier”。然后我们可以查询“Zone.Indentifier”ADS的内容。
现在我们知道该文件是从区域 3 下载的。使用区域图表我们可以看到它来自 Internet 区域。
0 My Computer 1 Local Intranet Zone 2 Trusted sites Zone 3 Internet Zone 4 Restricted Sites Zone
请注意,我的测试下载文件位于测试目录中。这意味着我将文件从我的下载目录移到了这里。这是 ADS 的妙处,因为它是文件的一部分,所以它会随文件一起移动。即使我复制了它,ADS 也会在新副本上。
其他互联网浏览器以类似的方式使用 ADS。
文件分类基础设施:
FCI(Microsoft 文件分类基础设施 (FCI) 说明) 非常依赖 ADS。分类的工作方式是将标签放在文件上,这样无论文件发生什么情况,您都可以跟踪文件被归类为什么。它可以被编辑、复制、移动到另一台服务器,其分类标签保持不变。
其他的:
Office 文件和 Outlook Express 文件使用 ADS。
Windows 中使用多个数据流的一个组件是附件执行服务,每当 Internet Explorer 或 Outlook 等应用程序使用用于保存基于 Internet 的附件的标准 Windows API 时,都会调用该服务。根据文件从哪个区域下载(例如“我的电脑”区域、Intranet 区域或“不受信任”区域),Windows 资源管理器可能会警告用户该文件可能来自不受信任的位置,甚至完全阻止对该文件的访问。
其他应用程序也可以使用多数据流功能。例如,备份实用程序可能会使用额外的数据流来存储文件上的备份特定时间戳。或者归档实用程序可能会实现分层存储,其中早于某个日期或在指定时间段内未访问的文件将移动到离线存储。该实用程序可以将文件复制到离线存储,将文件的默认数据流设置为 0,并添加指定文件存储位置的数据流。
来源Windows Internals,第六版,第 2 部分,Mark Russinovich、David A. Solomon、Alex Ionescu
进一步阅读
答案2
未命名数据流(也称为$DATA:””
)只不过是文件的数据分支。
换句话说,这是您的数据,即文件中包含的数据。由于它包含文件的数据,因此您在 Explorer 中看到的文件大小是其未命名数据流的大小。
答案3
与使用备用数据流的 MacOS 兼容。它将数据存储在两个流中:资源分叉和数据分叉。数据分叉存储实际数据,而资源分叉存储应用程序元数据。为了与 Apple 的分层文件系统兼容,Windows 在 NTFS 中引入了备用数据流来存储文件夹和文件的附加信息。
过去二十年来,人们对恶意软件如何使用它有很多猜测。