今天我看到这个奇怪的神奇NTFS系统支持:每个文件可以有多个数据流。基本上可以有一个大小为0的文件a.txt,但是该文件的单独数据流中可以隐藏任意数量的字节。这是严格的NTFS相关魔法,我没有看到有这些流的任何高尚的原因。您可以在Sysinternals的streams实用程序的帮助下查找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.

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

查看<!>上的Microsoft文档“

有帮助吗?

解决方案

从头到尾: NTFS数据流在Windows NT 4.0并且在所有后代中都存在(不包括win-95后代:98,Me)。在XP,Vista和Win 7中,它们仍然存在。只要Windows版本支持NTFS,它们就会支持文件流。他们将在很长一段时间内支持NTFS。

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

more < 1013.pdf:Zone.Identifier

使用流

Microsoft只有一些与流一起使用的命令,实际上只有<>使用流,因此只能使用可以使用这些重定向运算符的命令。我写了一篇关于备用数据流的几篇博客文章,了解如何才能仍然只使用这些命令操纵流。

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

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


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

其他提示

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

notepad.exe 1013.pdf:Zone.Identifier

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

1013.pdf:Zone.Identifier:$DATA
  

这是严格的NTFS相关魔法

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

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

Win32 API处理备用流的命名就好了。

另一方面,当可能有* /?时,CMD会对文件名进行一些时髦的解析。当<!>“;:<!>”时扩展和barfs;存在。这就是复制和类型失败但简单重定向的原因。

错误字面意思是它不被识别为备用数据流,并且您正在进行的引用包含路径名中不允许的特定字符(;其他字符不允许包括 \\ / 等。)

尝试:

启动this_is_a.txt:ads.exe

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top