NTFS备用数据流

Pet*_*háč 16 filesystems ntfs stream alternate-data-stream

今天我看到了这个奇怪的神奇NTFS系统支持:每个文件可以有多个数据流.基本上可以有一个a.txt0b大小的文件,但是在该文件的单独数据流中可以隐藏任意数量的字节.这是严格的NTFS相关魔法,我没有看到有这些流的任何高尚的原因.您可以streams在Sysinternals 的实用程序的帮助下查找NTFS流.这将告诉你,基本上每个讨厌的thumbs.db文件都附带一个额外的数据流.

好的,现在我已经看到了这个神奇的工作在Windows NT4系统上,流添加到文件,复制,删除(在上述实用程序的帮助下),但我现在在家里尝试这个我的Win XP系统,但是虽然我可以检测现有的流,我无法显示它们的内容,无法创建新的内容,或者在使用filename:streamname语法时无法显示任何内容.

我收到此错误:

文件名,目录名或卷标语法不正确.

示例:流实用程序的输出:

c:\DOWNLOADS>streams.exe -s .

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\DOWNLOADS\1013.pdf:
   :Zone.Identifier:$DATA       46

c:\DOWNLOADS>type 1013.pdf:Zone.Identifier
The filename, directory name, or volume label syntax is incorrect.
Run Code Online (Sandbox Code Playgroud)

为什么我不能显示备用数据流的内容?

查看有关" 如何使用NTFS备用数据流 " 的Microsoft文档,我可以看到这适用于我的操作系统,尽管他们确实提到将来不支持这些流.任何人都可以对此有所了解吗?

Abe*_*bel 21

从我的脑海中开始:NTFS数据流是在Windows NT 4.0中引入的,并且已经存在于所有后代中(不包括win-95后代:98,Me).在XP,Vista和Win 7中,它们仍然存在.只要Windows版本支持NTFS,它们就会支持文件流.他们将在未来很长一段时间内支持NTFS.

您在问题中显示的页面上描述了您所遇到的错误.该type命令不了解流.使用:

more < 1013.pdf:Zone.Identifier
Run Code Online (Sandbox Code Playgroud)

使用流

微软只有与工作流少数的命令,其实只是<,>与流工作,因此只命令可以使用,可以工作与这些重定向操作符.我在备用数据流上写了几篇博客文章,介绍如何只使用这些命令来操作流.

Streams只能用于设计与它们一起使用的程序,只是因为它们需要特殊处理(比较连接点,也是NTFS的一个功能,但驱动程序隐藏了细节,程序不需要做任何特殊的事情:它们只需将连接点视为真实文件).

当您尝试使用打开文件流start filename:streamname并且程序显示"非法文件名"或"未找到文件"时,并且您肯定流名称是正确的,那么程序可能不支持流.我注意到记事本,写字板和Word/Excel可以正常使用流,尽管Word和Excel认为这些文件很危险.以下是您可能尝试的一些实验.


注意:您似乎认为备用数据流是奇怪的.它们很奇怪,因为它们是如此隐蔽,但许多主要的文件系统(HFS,NSS)都有它,这个概念可以追溯到80年代初.实际上,最初将流添加到NTFS以实现与其他文件系统的互操作性.


Nis*_*shi 8

顺便说一下,你可以用记事本打开AltDataStream:

notepad.exe 1013.pdf:Zone.Identifier
Run Code Online (Sandbox Code Playgroud)

此外,您可以指定AltDataStream的类型(不仅使用记事本,它是'完整流名称'):

1013.pdf:Zone.Identifier:$DATA
Run Code Online (Sandbox Code Playgroud)

  • 对于 Word、Excel 以及可能的其他 MS 程序也是如此,但您必须从命令提示符启动它。数据流的类型确实可以指定,但必须始终是`$DATA`,不支持其他类型。 (2认同)

Gai*_*ius 7

这是严格的NTFS相关魔法

不是这样 - Mac OS自那时起就有了这些,它们在那个世界被称为叉子,你会使用ResEdit来获取它们.它们的经典用法是将媒体资产与可执行文件捆绑在一起.

  • 确实.Microsoft使用备用流在其NT Server _Services for Macintosh_包中存储Mac forks. (9认同)

Vic*_*aci 6

备用流的一个可能目的:元数据.可以为文档添加大型描述而不影响原始文件的内容.