1.6 使用 Streams 工具移除下载文件的 ADS 信息:把“来自互联网”的小尾巴剪掉



🔥 个人主页: 杨利杰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 让“从网上下来的工具”更干净、更安静)

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 里。

所以:

  1. 优先只在"工具目录"这类可控区域使用批量删除
    • 比如 C:\Tools\SysinternalsD:\DevTools
  2. 避免对系统目录 / 程序目录乱删 ADS
    • 比如 C:\WindowsC:\Program Files,不要脑子一热直接 -s -d 全扫
  3. 企业环境中,提前和安全 / 合规同事打个招呼
    • 有些审计工具依赖 ADS 做标记,删之前最好说一声

记住一句话:我们删的是"已确认可信来源、只想去掉提示的小尾巴",而不是盲目去"清理一切看不见的东西"。


六、实战示例:部署 Sysinternals 工具的标准流程

结合 1.4、1.5 和本节内容,你可以在读书笔记中整理一套"标准部署流程",比如:

  1. 从微软官网下载安装包

    • 下载 SysinternalsSuite.zipC:\Downloads(或公司内部工具盘)
  2. 解压到统一目录

    • 解压到:C:\Tools\Sysinternals
  3. 使用 Streams 清理 ADS

    powershell 复制代码
    streams.exe -s C:\Tools\Sysinternals         # 先看看有哪些 ADS
    streams.exe -s -d C:\Tools\Sysinternals      # 再统一删除
  4. 把目录加入 PATH(可选)

    • 方便后续直接在命令行里敲 procexpprocmon 等工具名
  5. 备份:将清理好的目录打包,作为"干净版工具包"分发给团队

你在博客中把这套流程配上命令 + 截图,基本就是一篇可以直接给团队同事看的"Sysinternals 工具包标准部署指南"。


七、小结:Streams 让"从网上下来的工具"更干净、更安静

最后,用三句话把本节的核心内容收拢一下,方便你在博客末尾做总结:

  1. NTFS 的附加数据流(ADS)机制会给下载文件加上 Zone.Identifier 等标记,这是 Windows 安全策略的一部分。
  2. Sysinternals 的 Streams 工具可以帮助你批量扫描并删除这些 ADS,特别适合清理"已经确认安全的工具目录"。
  3. 合理使用 streams -s -d,配合统一目录规划和 PATH 配置,可以让你在部署 Sysinternals 工具时既安全、又高效、还少弹窗。

到这里,第 1 章的"环境准备工作"已经基本完成:

你知道去哪下工具、放在哪里、怎么清理 ADS。

接下来章节就可以更安心地进入 Sysinternals Live、单一可执行映像、论坛与博客资源 这些更偏"使用姿势"与"学习资料"的部分了。

🔝 返回顶部

点击回到顶部

相关推荐
安科士andxe3 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
YJlio6 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
l1t6 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
CTRA王大大6 小时前
【网络】FRP实战之frpc全套配置 - fnos飞牛os内网穿透(全网最通俗易懂)
网络
testpassportcn7 小时前
AWS DOP-C02 認證完整解析|AWS DevOps Engineer Professional 考試
网络·学习·改行学it
山塘小鱼儿7 小时前
本地Ollama+Agent+LangGraph+LangSmith运行
python·langchain·ollama·langgraph·langsimth
码说AI7 小时前
python快速绘制走势图对比曲线
开发语言·python
通信大师7 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
wait_luky8 小时前
python作业3
开发语言·python