从网上下载一个文件,双击却被告知"此文件来自其他计算机,可能被阻止";Office 打开后只能在"受保护的视图"里看,一个字也改不动;同一个文件你自己打不开、同事从原站重下却没事。这篇把"下载的文件被锁"拆成三件事:Windows 到底在文件上盖了个什么、这枚戳记会被哪些操作带走、以及"解除锁定"这个按钮和 Unblock-File 这条命令分别只管哪一层。规则原文取自微软官方中文文档,界面文字、参数行为和错误提示原文来自一台 Windows 10 专业版 22H2(内部版本 19045.6466)实机的复现结果。

信息核验时点:2026-11-01(Windows PowerShell 5.1.19041.6456;Unblock-File 隶属 Microsoft.PowerShell.Utility 模块 3.1.0.0,官方文档记录该 cmdlet 自 Windows PowerShell 3.0 引入)


本文要点
  • 一句话定义:下载文件时的那把"锁",指的是 Windows 给文件追加的一条来源记录,微软在官方文档里叫它"Web (MOTW) 标记",在 NTFS 上落成一条名叫 Zone.Identifier 的备用数据流;官方对 Unblock-File 的实现说明写得很直白——"在内部,Unblock-File cmdlet 删除 Zone.Identifier 备用数据流,该数据流的值为 3,以指示它已从 Internet 下载。"
  • 核心结论:所谓"打不开"至少有三套互不相干的执法者——文件上的来源戳记、SmartScreen 的信誉判定、应用自己的保护策略。它们解法不同,且 Unblock-File 只删第一条,所以先看提示是哪一层弹的,再决定解哪一层,比急着关防护有效得多。
  • 适用场景:下载的安装包装不上、Office 文档只读不能改、双击 .ps1 脚本提示未签名、归档目录里几百个文件要一次性放行。
  • 适用人群:经常从网上取文件、又常被这些提示卡住的办公人群,以及替同事看问题的电脑"热心人"。
  • 短板/边界:解锁改的是来源记录,不改文件内容,也不等于文件安全;官方明确要求"仅取消阻止来自受信任源的文件"。公司配发的电脑上,这一层往往由策略统管,个人解不动也不该解。

「解除锁定」锁的到底是什么东西?

结论先给:它锁的不是权限,也不是加密,而是贴在文件身上的一个"来源戳记"。

微软给这件事起的正式名字是"附件管理器"。官方中文页开篇就交代了它的判据:"附件管理器通过识别从 Internet 下载或从其他潜在不安全位置接收的文件来帮助保护设备。 Windows 使用安全信息(有时称为 Web (MOTW) 标记 )来确定文件在打开前是否应显示安全警告。"(Microsoft Support:有关 Microsoft Windows 中的附件管理器的信息)

同一页还写了这个戳记是什么时候盖上去的:"下载文件时,Windows 会添加有关该文件来自何处的信息。",来源被分成三类:"Internet""另一台计算机""受限或不受信任的位置"(同上页)。注意第二条——被标记的不只是"从网上下的",从别人那台机器拷过来的也算,这也解释了为什么属性框里的提示写作"来自其他计算机"。

而在 NTFS 文件系统上,这个戳记有一个可以被直接看见的实体:一条备用数据流。正常文件只有一条默认的 :$DATA 流装着正文;带来源标记的文件会多出一条叫 Zone.Identifier 的流。实机上一眼能看全:

PS> Get-Item -Path .\marked2.txt -Stream *

StreamLength Mode
------------ ----
:$DATA      3 rw-a-
Zone.Identifier 26 rw-a-

把这条流的内容读出来,是两行:

[ZoneTransfer]
ZoneId=3

那个数字 3 就是关键。官方对 Unblock-File 的说明里给了它的含义:"在内部,Unblock-File cmdlet 删除 Zone.Identifier 备用数据流,该数据流的值为 3,以指示它已从 Internet 下载。"(Microsoft Learn:Unblock-File)顺带一提,官方文档示例里那条流的长度也是 26 字节,和 [ZoneTransfer] 加 ZoneId=3 这两行的字节数正好对得上。

理解成"戳记"而不是"锁",后面所有的坑都能提前避开:它跟着文件走,不跟着程序走;它只是记录,不是判定——盖了戳记不代表文件有问题,只代表 Windows 记得它是从外面来的。官方对打开时的动作是这么列的:"打开文件时,Windows 会检查此信息,并可能:",结果有四种:"在打开文件之前显示警告""阻止文件自动打开""在 Microsoft Office 或 Microsoft Edge 等应用中应用其他保护""检查文件是否被阻止"(附件管理器页)。真正拦你的从来是这四条里某一条的执行者:资源管理器、Office、PowerShell、杀软,各读各的,各拦各的。

同一台电脑上,为什么会出现好几种"打不开"?

因为拦你的不是同一个东西。下面这张表按"提示长什么样"来分诊,五种提示分属三层。

你看到的提示谁弹的它管的范围对应解法
属性"常规"页底部:"此文件来自其他计算机,可能被阻止以帮助保护该计算机。"+"解除锁定"Windows 附件管理器只读文件上那条流勾上再点确定,或 Unblock-File
双击下载来的程序时,SmartScreen 拦下并提示风险SmartScreen这个程序的信誉,不写在文件里换可信来源重下;Unblock-File 够不着这一层
Edge 下载列表里"为了你的安全已阻止下载"浏览器+SmartScreen下载动作本身官方不建议强行保留,改源重下
Office 顶部黄条"受保护的视图",只读、宏被禁Office 应用自己这份文档的编辑能力"启用编辑",或先去掉来源戳记再打开
双击 .ps1,报"无法在当前系统上运行该脚本。"PowerShell 执行策略脚本能否被执行Unblock-File,或签名

前两行容易混淆,值得多说一句。SmartScreen 是"信誉"这一层,Windows 安全中心里的开关叫"检查应用和文件",官方说明是:"此开关会打开 Microsoft Defender SmartScreen 来评估可能从 Web 下载的应用和文件的信誉。"(Microsoft Support:Windows 安全中心应用中的应用 & 浏览器控件)。浏览器侧的下载拦截也归它管:"筛查下载: SmartScreen 会检查你的下载文件,以获取所报告的恶意软件站点和已知不安全的程序的列表。"(Microsoft Support:SmartScreen 如何在 Microsoft Edge 中保护我?)

后两行是应用层的事。附件管理器页把这条链路说清楚了:Windows 检查完来源信息后可能"在 Microsoft Office 或 Microsoft Edge 等应用中应用其他保护",Office 侧的具体表现是"Microsoft Office 应用可能会在 受保护的视图中 打开下载的文件,以帮助防止恶意内容自动运行。",被限制的动作是"在只读模式下打开""禁用编辑""禁用宏或活动内容"(附件管理器页)。换句话说,受保护的视图管的是"这份文档能不能编辑、宏能不能跑",它既不是文件删除权限,也不是系统级的执行许可。

怎么确认一个文件到底带没带这把锁?

办法一:看属性框。 官方的路径写得很细:"打开“文件资源管理器”。""找到文件。""右键单击该文件,然后选择“属性”。""在“ 常规 ”选项卡上,在窗口底部附近查找安全消息。""如果文件被阻止,请选择“ 取消阻止”。""选择“应用”>“确定”。"(附件管理器页)

这里有一处中文口径的差异要说清楚:官方页面把那个按钮译作"取消阻止",而这台 Windows 10 22H2 简中系统上实际显示的是「解除锁定」——同一个控件的两种叫法。实机把属性框的控件文字逐条读出来是:

安全:  此文件来自其他计算机,可能被阻止以帮助保护该计算机。
按钮:  解除锁定(&K)

看到"安全"这一栏出现,就说明文件带戳记。实机做了反向对照:同一目录下另建一个从未被标记过的文件,打开它的属性框,「安全:」这一行和「解除锁定」按钮两样都不出现——也就是说这一栏是按需渲染的,看不到它通常就代表这个文件没有来源标记。

办法二:用命令读那条流。 官方文档给的写法是 Get-Item * -Stream "Zone.Identifier" -ErrorAction SilentlyContinue(Unblock-File 页示例 3)。要看整个目录有多少文件带着标记,把目录交给 Get-ChildItem 再逐个查流即可:

Get-ChildItem -LiteralPath D:\下载 -Recurse -File |
  Where-Object { Get-Item -LiteralPath $_.FullName -Stream Zone.Identifier -ErrorAction SilentlyContinue }

实机测试里,这条管道在一个含 3 个带标记文件的目录树上返回 3,处理后返回 0,计数是可靠的。

一个必须提醒的误区:属性框只反映"这一个文件"。 压缩包带不带标记,和它里面那些文件带不带标记,是两件独立的事。实机验证过:对一个 zip 执行 Unblock-File,zip 自己那条流被删掉了,但同目录里另一个带标记的文件原封不动(前后都是"标记存在=True")。所以"我把压缩包解锁了,解压出来还是被拦"并不奇怪——你解的是zip的外壳,不是里面每个文件的来源记录。

单个文件怎么解开?为什么勾了"解除锁定"却没生效?

结论先给:勾完必须再点"确定"或"应用",否则什么都没写进去。

这一步是实机复现出来的:在属性框里点掉「解除锁定」复选框之后、还没点确定之前,再查一次那条流,结果仍然是 :$DATA=3 / Zone.Identifier=26;点了确定之后再查,只剩 :$DATA=3。也就是说这个复选框只是个待提交的意图,落盘发生在"确定/应用"那一刻。很多人以为自己解过了,其实只是勾了一下又按了"取消",或者直接关掉了窗口。

命令行是同一件事,且官方明确了等价性——Unblock-File 就是资源管理器那个按钮的命令行版本:

Unblock-File -LiteralPath "D:\下载\setup.exe"

三条使用边界,全部来自官方文档:

  • 它只作用于文件系统上的文件:"Unblock-File cmdlet 仅适用于文件系统驱动器。"
  • 对没被拦的文件重复执行无害:"如果在未阻止的文件上使用 Unblock-File cmdlet,该命令对未阻止的文件没有影响,并且 cmdlet 不会生成错误。"实机也对已经解过锁的文件再跑一次,结果是流数量不变、错误数为 0,与官方描述一致。
  • 路径可以直接给文件,也支持 -LiteralPath;-LiteralPath 的取值"完全按照键入时的方式使用",路径里有方括号、# 这类字符时更稳。

一批文件怎么批量解锁?为什么 -Recursive 不好使?

网上流传的 Unblock-File -Path D:\下载 -Recursive 这种写法,在 Windows PowerShell 上是根本不存在的参数。官方 Unblock-File 页的语法只列了四个参数:-Path、-LiteralPath、-WhatIf、-Confirm。实机在 Windows PowerShell 5.1.19041.6456 上强行加上 -Recursive,返回的原文是:

找不到与参数名称“Recursive”匹配的参数。

把文件夹本身交给 -LiteralPath 也不顶用:官方对 -LiteralPath 的定义是"指定要取消阻止的文件",实机把一个含 3 个带标记子文件的目录交给它,跑完之后子文件的标记数还是 3,一个都没被解开。

真正能批量的是官方示例 2 那种管道写法——"此命令取消阻止名称包括“PowerShell”的 C:\Downloads 目录中的所有文件",命令是 dir C:\Downloads\*PowerShell* | Unblock-File,官方还紧跟了一句警告:"在验证所有文件都安全之前,不要运行这样的命令。"(Unblock-File 页)文档同时确认了输入方式:"可以通过管道将文件路径传递给此 cmdlet。"

递归场景把 Get-ChildItem -File 接在前面就行:

Get-ChildItem -LiteralPath "D:\下载" -Recurse -File | Unblock-File

实机对照(同一个目录树,处理前后各数一次带标记的文件):

写法本机结果(处理前 → 处理后)
Unblock-File -LiteralPath 目录 -Recursive直接报错,未执行
Unblock-File -LiteralPath 目录3 → 3,子文件一个都没解
Get-ChildItem 枚举文件后再接 Unblock-File(就是上面那条)3 → 0,全部解开

先想清楚范围再按回车。批量命令会把目录里每一个文件的来源记录都抹掉,包括那些你本来不该放行的安装包。稳妥一点的做法是先用上一节的检测管道列出清单、自己过一遍文件名,再把管道尾巴换成 Unblock-File。

复制、改名、压缩、解压之后,戳记会跟着走吗?

会,而且比想象中跟得紧。实机在同一块盘上做了六个操作,结果如下:

对文件做的事戳记还在吗实测细节
复制到新文件(Copy-Item)在新文件同样报 Zone.Identifier=26
移动/重命名(Move-Item、Rename-Item)在改名后仍能读到那条流
用文本编辑器改写正文再保存在正文变了,来源记录不受影响
用 PowerShell 压成 zip 再解压不在解压出来的文件只剩 :$DATA
属性框勾"解除锁定"(未点确定)在复选框只是待提交状态
Unblock-File不在流被删除,正文与字节数不变

三条值得单独说的:

第一,别把文件发给同事来"帮他去掉锁"。 复制和移动都会把戳记一起带走,你把一个带标记的文件拷到共享盘,同事那边照样会看到同一句提示。想干净地交接,要么让他自己解锁,要么走一条会重置来源信息的通道。

第二,"打包再解压能去锁"这条经验不能外推。 实机验证的是 PowerShell 的 Compress-Archive/Expand-Archive 这一条往返路径:压进去的文件带标记,解压出来的只剩正文。其它解压工具(第三方压缩软件、邮件客户端的自动解包)走的是另一套代码,本篇没有测试,不能保证同样结果。

第三,解锁不改动文件本身。 被删掉的只有那条名为 Zone.Identifier 的流,正文一字节都没动。所以"解锁会不会破坏文件"这个担心可以放下;反过来说,"解了锁文件就变安全了"也不成立——内容一点没变,变的只是 Windows 对来历的记忆。

双击 .ps1 被 PowerShell 拒绝运行,是同一件事吗?

是同一个戳记,换了一个执法者。PowerShell 的执行策略里,RemoteSigned 这一档在实机上表现出的规矩是:带着这个戳记、又没有签名的脚本不许运行;而 Unblock-File 的官方定位就是解决这一类问题:"Unblock-File cmdlet 允许打开从 Internet 下载的文件。 它取消阻止从 Internet 下载的 PowerShell 脚本文件,以便即使 PowerShell 执行策略 RemoteSigned也是如此。"(Unblock-File 页)

实机做了一组对照实验,脚本正文完全相同,只改来源流,执行策略固定在 RemoteSigned:

无标记脚本     → 正常输出 RAN-OK
加 Zone.Identifier=3 后 → 无法加载文件 D:\tmp\motw3\marked.ps1。
                          未对文件 D:\tmp\motw3\marked.ps1 进行数字签名。
                          无法在当前系统上运行该脚本。
Unblock-File 后 → 正常输出 RAN-OK

三个变量里只有那条流,结论就很干净:拦你的是来源记录,不是脚本内容,也不是"PowerShell 坏了"。这类提示常被人误当成权限问题,绕去改全局执行策略,其实代价大得多。顺带说明两个边界:Unblock-File 只影响本地计算机上文件的那条流,管不到别人机器上的判定;而 -Recursive 不存在这条,在脚本场景同样成立,批量做法仍是"枚举文件再走管道"。

如果你的日常里经常要跑自己写的脚本,把来源问题一次性解决会更省事:写在自己的工作目录里、用编辑器保存而不是从浏览器下载,就不会被盖上这个戳记。关于 PowerShell 在本机上的日常用法,可以看这篇办公自动化:用 PowerShell 脚本把重复操作固化下来。

什么时候不该解?解锁能解掉风险吗?

不能。官方文档在这件事上没有留任何含糊空间,一共两处提醒:命令层面是"在使用 Unblock-File cmdlet 之前,请查看该文件及其源,并验证它是否安全打开。",界面层面是"仅取消阻止来自受信任源的文件。"(附件管理器页、Unblock-File 页)

官方还给了一份"打开前该做的四件事",可以直接当清单用:"验证文件来自何处。""使用Microsoft Defender防病毒软件或防病毒软件扫描文件。""确保文件类型与预期下载的内容匹配。""避免打开来自未知发件人的意外电子邮件附件或文件。"(附件管理器页)

其中第三条在实机层面特别值得较真:来源戳记只说明"这是外面来的",不说明"这是什么"。一个改名为 .pdf 的 .exe,属性框照样显示"打开方式"是 PDF 阅读器,但真实类型是那个流之外的扩展名和内容。这类"扩展名与内容不符"的把戏,解锁之后只会更危险。关于本机防线的整体取舍,见家用杀毒软件怎么选,Windows 自带够不够用。

至于"干脆把 SmartScreen 关掉",官方原文只有一句:"关闭 SmartScreen 会使设备更容易受到恶意文件和网站的攻击。"(附件管理器页)把两层混为一谈是这类问题里最常见的错误操作:SmartScreen 的判定不在文件里,Unblock-File 又只删那条流,所以关掉信誉保护既解不掉当前这个提示,又把整机拉低一档;而在公司电脑上,这项设置常常根本不是你能改的——官方说得很明白:"在某些情况下—,例如在工作或学校网络—上,此设置可能由系统管理员 管理,无法更改。"(Edge SmartScreen 页)

三类文件建议不要自己动手解:来路不明的激活工具和"绿色版"安装包、别人通过聊天软件转来的压缩包里的可执行文件、公司电脑上策略统管范围内的文件。前两类是"戳记在这里,恰好是因为它确实来自不可信的对方";后一类该找管理员,而不是找一个绕过策略的办法。

提示还在,但可能不是这把锁造成的,怎么排除?

如果按上面做过一次、提示照旧,先别再折腾戳记,官方"排查已下载文件的警告"给出的方向是:"确保 Windows 和你的应用是最新的。""验证文件是否来自受信任的源。""如果文件可能已损坏,请重新下载该文件。""检查组织是否应用阻止已下载文件的安全策略。""仅出于测试目的暂时禁用第三方下载管理器或安全软件。"(附件管理器页)

翻译成能动手的顺序:

  1. 先看文件是不是完整的。 下载中断会留下一个大小正常、内容残缺的文件,这时候弹的往往是"无法打开"而不是"被阻止"。重新下载一次是成本最低的排除法。
  2. 再看是不是被杀软接管了。 如果文件在磁盘上直接消失、或者被搬进了隔离区,那和来源戳记无关——那已经是另一个环节的判定,处理路径见上面那篇杀毒软件的链接。
  3. 然后分清"被拦"和"被占用"。 提示里出现"另一个程序正在使用此文件"的,是文件句柄上的共享锁,不是来源锁,重启或注销往往比 Unblock-File 更对症。查占用的思路可以看Windows 自带工具就够了:这些系统功能不用另装软件里的资源管理器与系统工具部分,压缩与解压的替代方案见7-Zip:老牌解压器还能这样用。
  4. 最后确认是不是策略层的限制。 一台受管电脑上,个人把每个文件都解一遍是跑不赢的,这类问题应该回到管理员那条线。

常见问题

解锁会改动文件内容吗?

不会。Unblock-File 删掉的是那条名为 Zone.Identifier 的备用数据流,正文所在的那条流完全不受影响。实机对照过解锁前后的字节数,正文一致;官方描述里也只提到"删除 Zone.Identifier 备用数据流"这一件事。

属性框里没有"安全"那一栏,是不是就代表没被锁?

通常代表这个文件没有来源标记。但有两种例外:一是这一层拦你的本来就不是戳记,而是 SmartScreen 的信誉判定,它不在文件里;二是你查的是压缩包,里面那些文件是独立的对象,得逐个查。用检测管道跑一遍比翻属性框可靠。

我已经勾了"解除锁定",为什么再打开还是被拦?

先确认自己点过"确定"或"应用"。实机验证:只勾复选框而不提交,那条流仍然存在。如果你确实提交过,就要看是不是查错了对象——比如解的是外层的 zip,而拦你的是解压出来的那个文件。

对整个文件夹一键解锁,有没有安全的批量写法?

有,但要按两步走。第一步只列不改,把目录里所有带标记的文件列出来看一眼;第二步再执行 Get-ChildItem -LiteralPath 目录 -Recurse -File | Unblock-File。不要写成 Unblock-File -Path 目录 -Recursive,Windows PowerShell 里的 Unblock-File 没有这个参数,实机直接报"找不到与参数名称"Recursive"匹配的参数。"

我解开了锁,那个蓝色弹窗还弹,是不是白解了?

不是白解,但它们本来就是两层。Unblock-File 的作用域写在官方定义里——删除那条来源流;SmartScreen 的判定依据的是"已知恶意站点和文件列表",属于信誉层,不依赖文件上有没有那条流。文件本身已经能打开、只剩信誉提示还在的,先核对来源是否可信;来源说不清就换一个可信的地方重下,不建议为了一次放行去关掉整机的保护。

Windows 11 上的情况一样吗?

本篇的界面文字、参数支持和存留结果来自一台 Windows 10 专业版 22H2(19045.6466)实机,机制描述来自微软官方文档,官方文档未区分系统版本。版本之间属性框的中文措辞和按钮叫法可能不同(官方中文页写作"取消阻止",本机显示"解除锁定");Windows 11 某次更新带来的策略变化,本篇没有实测,不作断言。两个系统的整体取舍可参考Windows 10 还能用多久,迁移到 11 前先弄清这三件事。

结尾:先做这三件事

第一,分清是哪一层在拦你。 提示里出现"此文件来自其他计算机"或"可能被阻止",那是文件上的来源戳记,属性框里有对应的复选框;拦你的是双击程序时弹出的 SmartScreen 提示,那是信誉判定,跟文件上有没有那条流无关。看错层,做什么都没用。

第二,单个文件走界面,一批文件走管道,并且先列后解。 界面路径是属性、常规、勾「解除锁定」、点确定,四步一个都不能省;命令路径是 Get-ChildItem -Recurse -File | Unblock-File。-Recursive 在 Windows PowerShell 上不存在,把文件夹直接交给 -LiteralPath 又只处理文件夹本身,这两条弯路本篇都在实机上踩过并确认无效。

第三,把"能不能解"的判断放回来源,而不是放回提示。 微软的两条提醒应该抄在心上:"在使用 Unblock-File cmdlet 之前,请查看该文件及其源,并验证它是否安全打开。""仅取消阻止来自受信任源的文件。"解锁只是让 Windows 不再记得它的来历,不改变文件本身是好是坏。


本文机制与提示语核对于 2026 年 11 月 1 日的微软官方中文文档(附件管理器、应用 & 浏览器控件、Edge SmartScreen、Unblock-File 四个页面),参数行为与存留结果核对于同一天的 Windows 10 22H2 实机复现记录。

发表评论

验证码图片,点击可更换