文件也有“身份证”——交换数据流
添加时间: 2007-2-28 23:49:07 作者: 第九软件网 阅读次数:35 来源: http://www.d9soft.com

什么是交换数据流
NTFS文件系统中有一个很少被大家注意的特性,通过该特性,我们可以在保证一个文件完整的情况下给该文件附加一些额外的信息,这些本不属于该文件的信息就叫做“交换数据流(Alternate Data Stream)”;而文件本身则叫做该文件的“主数据流(Primary Data Stream)”。在用IE浏览器下载软件时通常会弹出一个下载提示框时,可以选择直接运行或是保存到本地,如果选择了直接运行的话,软件就会被下载到临时文件夹,然后自动运行。当可执行文件在下载完成后自动运行时就会出现图1所示的对话框。由于这些可执行文件可能含有病毒或者其它危险因素,随意运行这些文件就有可能给我们的系统带来损害。为了防止用户错误地运行这种文件,微软在Windows XP SP2中使用了这样一个新功能来提醒用户,该功能就是依赖交换数据流工作的。
当我们使用IE浏览器把网上的可执行文件保存到NTFS文件系统的分区上,IE浏览器就会自动给下载回来的文件附加一个交换数据流,当我们双击运行带有这种数据流的文件时,系统就会出现图2所示的提示。通过这个实例我们知道,要使该选项生效,需要同时满足下列条件:1、文件是从网络中获得的;2、文件必须保存在NTFS文件系统的分区上;3、文件必须使用IE浏览器下载到本地,使用其它下载工具下载的文件不会被添加这一数据流。

取消安全警告
虽然这是一种善意的提示,但我们有可能会觉得麻烦,希望能够取消这种提示。我们可以直接在图1所示的对话框中取消“打开此文件前总是询问”的选中状态。或者直接查看文件属性,在“属性”对话框的“常规”标签上点击“解除锁定”按钮,也可以禁用这种提示。这两种方法都可以删除文件中的交换数据流,但是要注意,通过这两种方法删除的只是特定文件中的交换数据流,其它文件不受影响。换句话说,在运行其它包含交换数据流的文件时同样会出现这种提示,除非对其它文件重新执行上述操作。
查看交换数据流
我们如何查看某个文件里是否含有交换数据流呢?可以使用一个叫做Streams的工具。这是一个命令行工具,需要先打开命令提示符,再从命令提示符窗口中运行Streams,直接双击Streams.exe是无法运行程序的。假设我们要查看保存在C盘根目录下的dxwebsetup.exe文件的交换数据流,可以使用命令“streams c:\dxwebsetup.exe”。为了方便对比,我们对同一文件分别使用了该命令两次,第一次是在文件带有交换数据流的情况下使用的,运行结果显示为“:Zone.Identifier:$DATA 26”;而第二次则是删除交换数据流之后使用的,结果显示为“No files with streams found”,这充分说明了交换数据流的存在(如图3)。

提示:在运行streams时添加参数“-d”可以删除文件的交换数据流。
交换数据流的其它作用
想知道交换数据流还有什么其它作用吗?不说远了,就说电脑迷光盘中的卡巴斯基杀毒软件,该软件就利用了类似交换数据流的特性,只不过在卡巴斯基中该功能被称为“iChecker”(用于FAT32文件系统)和“iStreams”(用于NTFS文件系统)。
当我们第一次使用5.0以上版本的卡巴斯基杀毒软件对整个系统查毒的时候,杀毒软件会自动给所有扫描过的文件添加交换数据流信息,标记该文件已经被检查过,是安全无毒的。日后再次扫描文件时杀毒软件会首先检查每个文件的交换数据流中有没有自己标记的信息,如果有,则会跳过这个文件,这会极大地提高扫描速度。
你可能会担心每一个文件都被卡巴斯基添加了交换数据流后会占用很多硬盘空间,其实这个担心是多余的,交换数据流并不会占用硬盘空间,大家可以用前面的方法删除一个文件的交换数据流,然后对比删除前后的文件体积来验证。也许你还会想如果不再使用卡巴斯基了,该如何删除大量文件中留下的交换数据流呢?这里就需要用到卡巴斯基公司提供的一个小程序KLStreamRemover,与使用Streams一样,KLStreamRemover也需要用命令提示符来运行。将文件保存在想要清除数据流的文件所在的硬盘分区,然后打开命令提示符窗口,运行“Klstreamremover.exe -r”命令,程序就会自动将该分区下被卡巴斯基杀毒软件附加的交换数据流全部删除。
提示:在使用KLStreamRemover之前应先把巴斯基杀毒软件卸载掉。KLStreamRemover一次只能清除一个分区内文件的数据流,若要清除多个分区的话,需要重复运行KLStreamRemover多次。
上下文章:
上一篇文章: 自己动手:巧妙轻松去除迅雷的广告 下一篇文章: 移动存储新时尚 打造免费的加密U盘
相关文章:

