
🔥 个人主页: 杨利杰YJlio
❄️ 个人专栏: 《Sysinternals实战教程》 《Windows PowerShell 实战》 《WINDOWS教程》 《IOS教程》
《微信助手》 《锤子助手》 《Python》 《Kali Linux》
《那些年未解决的Windows疑难杂症》
🌟 让复杂的事情更简单,让重复的工作自动化


文章目录
- [1 6 使用 Streams 工具移除下载文件的 ADS 信息:把"来自互联网"的小尾巴剪掉](#1 6 使用 Streams 工具移除下载文件的 ADS 信息:把“来自互联网”的小尾巴剪掉)
-
- [一、先弄清楚:什么是 ADS?为什么会有 `Zone.Identifier`?](#一、先弄清楚:什么是 ADS?为什么会有
Zone.Identifier?) - [二、Streams 工具简介:专门处理 ADS 的"小剪刀"](#二、Streams 工具简介:专门处理 ADS 的“小剪刀”)
- [三、基础用法:先看看哪些文件带 ADS](#三、基础用法:先看看哪些文件带 ADS)
-
- [1. 查看单个目录中的 ADS](#1. 查看单个目录中的 ADS)
- [2. 递归扫描子目录(常用)](#2. 递归扫描子目录(常用))
- [四、删除 ADS:用 `-d` 一键剪掉小尾巴](#四、删除 ADS:用
-d一键剪掉小尾巴) -
- [1. 删除单个目录(不递归)](#1. 删除单个目录(不递归))
- [2. 递归删除目录及其子目录中的所有 ADS(典型用法)](#2. 递归删除目录及其子目录中的所有 ADS(典型用法))
- [3. `-nobanner` 等其它参数(提高脚本友好度)](#3.
-nobanner等其它参数(提高脚本友好度))
- [五、安全注意事项:别把该留的 ADS 一锅端了](#五、安全注意事项:别把该留的 ADS 一锅端了)
- [六、实战示例:部署 Sysinternals 工具的标准流程](#六、实战示例:部署 Sysinternals 工具的标准流程)
- [七、小结:Streams 让"从网上下来的工具"更干净、更安静](#七、小结:Streams 让“从网上下来的工具”更干净、更安静)
- [一、先弄清楚:什么是 ADS?为什么会有 `Zone.Identifier`?](#一、先弄清楚:什么是 ADS?为什么会有

1 6 使用 Streams 工具移除下载文件的 ADS 信息:把"来自互联网"的小尾巴剪掉
在上一节里,我们说到:
从浏览器下载下来的 Zip / EXE,在 NTFS 上会多一个"隐藏的小尾巴"------附加数据流(ADS),尤其是 Zone.Identifier。
它带来的直接效果是:
- 第一次运行 EXE 时,经常跳出"此文件来自 Internet,可能不安全"的提示
- 某些严格环境下,还可能被安全策略拦截
这一节,就轮到 Sysinternals 里的 Streams 工具登场了。
Streams 的作用:扫描并移除文件或目录中的附加数据流(ADS),特别是帮你批量清掉"来自互联网"的标记。
一、先弄清楚:什么是 ADS?为什么会有 Zone.Identifier?
在 NTFS 文件系统中,一个文件不仅仅是"你在资源管理器里看到的那一坨内容",还可以挂多个"附加数据流"(Alternate Data Stream)。
简单理解:
- 主数据流:你平时看到的那个文件内容
- 附加数据流:贴在文件上的"隐藏标签",名字类似
filename:Zone.Identifier
浏览器从互联网下载文件时,会在文件上加上一个 Zone.Identifier,里面记录:
- 文件来源区域(Internet / Intranet / Local Machine 等)
- 有的还会写上下载工具、URL 等信息
这就解释了几个现象:
- 右键文件 → 属性,可能看到"此文件来自其他计算机,可能被阻止"
- 某些执行策略会根据这个信息决定要不要弹出警告
这本质上是一种安全策略:系统记住"你是从网上捡回来的东西",避免你误双击就中招。
但在我们这种场景下:
- Sysinternals 工具是微软官方出的
- 你确认来源安全
- 你还要在一堆机器上部署、脚本调用
那这些 Zone 信息就变成了------有点烦人的噪音。
这时,用工具批量检查、批量移除这些 ADS,就比一个个右键"解除锁定"优雅得多。
二、Streams 工具简介:专门处理 ADS 的"小剪刀"
Streams.exe 是 Sysinternals 里专门用来:
- 枚举(列出)
- 删除(清理)
文件 / 目录中的附加数据流的命令行工具。
它能做什么:
- 查看某个文件是否带有 ADS
- 查看某个目录下有哪些文件带有 ADS(支持递归扫描)
- 一次性删除所有发现的 ADS(例如把所有
:Zone.Identifier砍掉)
它不是什么:
- 不是杀毒软件
- 不是"万能清理优化大师"
- 不是"只要删除 ADS 就绝对安全"的魔法棒
它只是非常专注地做一件事情:给你看清 ADS,然后按你指令把它们删掉。
三、基础用法:先看看哪些文件带 ADS
假设你已经把 Sysinternals Suite 解压到 C:\Tools\Sysinternals。
我们可以用 Streams 来"扫一眼"这个目录里有哪些文件挂着 ADS。
1. 查看单个目录中的 ADS
powershell
# 列出指定目录中文件携带的 ADS(不递归)
streams.exe C:\Tools\Sysinternals
常见输出会长这样(示意):
text
Streams v1.6 - Reveal NTFS alternate streams
Copyright (C) Microsoft Sysinternals
C:\Tools\Sysinternals\procexp.exe:
:Zone.Identifier:$DATA 26
C:\Tools\Sysinternals\procmon.exe:
:Zone.Identifier:$DATA 26
C:\Tools\Sysinternals\autoruns.exe:
:Zone.Identifier:$DATA 26
Summary:
Streams found: 3
Alternate streams: 3
Total size: 78
可以看到:
- 每个文件下都有一行
:Zone.Identifier:$DATA - 右边的数字是这个数据流的大小(字节)
只要你看到 Zone.Identifier,基本就可以确定:这是从网上下来的文件,Windows 给它打了一个"来自 Internet"的标签。
2. 递归扫描子目录(常用)
如果你压缩包解完,又做了一些自定义目录结构(比如 PsTools 子目录),更常见的用法是加 -s 参数:
powershell
# 递归扫描目录及其所有子目录
streams.exe -s C:\Tools\Sysinternals
这会从 Sysinternals 一路往下,把所有目录里的 ADS 都列出来。
推荐在真正删除前,先跑一遍"只列出不删除"的扫描,心里有数。
四、删除 ADS:用 -d 一键剪掉小尾巴
看清楚之后,就轮到真正的"清理手术"了。
1. 删除单个目录(不递归)
powershell
# 删除当前目录中的 ADS(不动子目录)
streams.exe -d C:\Tools\Sysinternals
参数说明:
-d= delete,删除所有发现的 ADS- 默认不递归,需要扫描子目录时要加
-s
2. 递归删除目录及其子目录中的所有 ADS(典型用法)
这一句是我们在"部署 Sysinternals 工具"场景下最常用的:
powershell
# 递归删除指定目录及所有子目录中的 ADS
streams.exe -s -d C:\Tools\Sysinternals
执行时可能会看到类似输出:
text
C:\Tools\Sysinternals\procexp.exe:
Deleted :Zone.Identifier:$DATA
C:\Tools\Sysinternals\procmon.exe:
Deleted :Zone.Identifier:$DATA
C:\Tools\Sysinternals\autoruns.exe:
Deleted :Zone.Identifier:$DATA
Summary:
Streams deleted: 3
Alternate streams deleted: 3
Total size: 78
执行完后,再跑一遍不带 -d 的扫描确认一下,是一个很好的习惯。
3. -nobanner 等其它参数(提高脚本友好度)
如果你想在脚本里使用 Streams,避免开头那一坨版权信息干扰输出,可以加上:
powershell
streams.exe -s -d -nobanner C:\Tools\Sysinternals
-nobanner:不显示工具的标题和版权信息,适合脚本处理日志输出
在公司内部做"自动部署 Sysinternals 套件"的脚本时,这类小参数能让日志更干净。
五、安全注意事项:别把该留的 ADS 一锅端了
虽然我们现在主要目标是删 Zone.Identifier,但要记住:
ADS 是一个通用机制,不是"只给浏览器用"的玩具。
有些软件会用 ADS 来存储自己的元数据,极少数情况下某些依赖可能写在 ADS 里。
所以:
- 优先只在"工具目录"这类可控区域使用批量删除
- 比如
C:\Tools\Sysinternals、D:\DevTools
- 比如
- 避免对系统目录 / 程序目录乱删 ADS
- 比如
C:\Windows、C:\Program Files,不要脑子一热直接-s -d全扫
- 比如
- 企业环境中,提前和安全 / 合规同事打个招呼
- 有些审计工具依赖 ADS 做标记,删之前最好说一声
记住一句话:我们删的是"已确认可信来源、只想去掉提示的小尾巴",而不是盲目去"清理一切看不见的东西"。
六、实战示例:部署 Sysinternals 工具的标准流程
结合 1.4、1.5 和本节内容,你可以在读书笔记中整理一套"标准部署流程",比如:
-
从微软官网下载安装包
- 下载
SysinternalsSuite.zip到C:\Downloads(或公司内部工具盘)
- 下载
-
解压到统一目录
- 解压到:
C:\Tools\Sysinternals
- 解压到:
-
使用 Streams 清理 ADS
powershellstreams.exe -s C:\Tools\Sysinternals # 先看看有哪些 ADS streams.exe -s -d C:\Tools\Sysinternals # 再统一删除 -
把目录加入 PATH(可选)
- 方便后续直接在命令行里敲
procexp、procmon等工具名
- 方便后续直接在命令行里敲
-
备份:将清理好的目录打包,作为"干净版工具包"分发给团队
你在博客中把这套流程配上命令 + 截图,基本就是一篇可以直接给团队同事看的"Sysinternals 工具包标准部署指南"。
七、小结:Streams 让"从网上下来的工具"更干净、更安静
最后,用三句话把本节的核心内容收拢一下,方便你在博客末尾做总结:
- NTFS 的附加数据流(ADS)机制会给下载文件加上
Zone.Identifier等标记,这是 Windows 安全策略的一部分。 - Sysinternals 的 Streams 工具可以帮助你批量扫描并删除这些 ADS,特别适合清理"已经确认安全的工具目录"。
- 合理使用
streams -s -d,配合统一目录规划和 PATH 配置,可以让你在部署 Sysinternals 工具时既安全、又高效、还少弹窗。
到这里,第 1 章的"环境准备工作"已经基本完成:
你知道去哪下工具、放在哪里、怎么清理 ADS。
接下来章节就可以更安心地进入 Sysinternals Live、单一可执行映像、论坛与博客资源 这些更偏"使用姿势"与"学习资料"的部分了。

🔝 返回顶部