Winget CLI 中 MotW 安全警告导致安装挂起问题的分析与解决方案
2025-05-08 11:32:59作者:舒璇辛Bertina
问题背景
在 Windows Package Manager (Winget CLI) 的使用过程中,当从内部 REST 源下载安装程序时,系统会自动添加一个标记(MotW,即 Mark of the Web)。如果下载源未被识别为受信任区域,Windows 会在执行安装程序时弹出一个图形界面的安全警告对话框。这个对话框会导致 Winget 安装进程无限期挂起,严重影响自动化部署和远程管理场景。
技术原理分析
MotW 是 Windows 系统为从互联网下载的文件添加的安全标记,用于标识文件的来源区域。当文件被执行时,系统会根据来源区域的安全设置决定是否显示安全警告。Winget 默认会对下载的安装程序添加此标记:
- 对于官方社区仓库,Winget 会在验证文件 SHA256 哈希后修改区域标记
- 但对于自定义 REST 源,目前缺乏相同的处理机制
- 当文件来自"互联网"区域而非"本地内网"区域时,系统会触发安全警告
问题重现条件
该问题在以下环境中可稳定复现:
- 使用内部搭建的 REST 源服务(如 rewinged)
- 安装程序文件托管在与 REST 源相同的域名下
- 该域名未被明确添加到 IE 信任站点或内网区域
- 通过 Winget 命令安装软件包时
影响范围
此问题对以下场景造成严重影响:
- 自动化部署脚本
- 远程管理(RDP/SSH)环境
- 无图形界面的服务器环境
- 持续集成/持续部署(CI/CD)流程
解决方案
方案一:将源域名加入信任区域(推荐)
通过修改注册表,将内部源域名明确标记为内网区域:
$YourSourceURL = 'https://source.company.internal/api'
$ParsedSourceUri = [uri]$YourSourceURL
reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\$($ParsedSourceUri.Host)" /v http /t REG_DWORD /d 1 /f
reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\$($ParsedSourceUri.Host)" /v https /t REG_DWORD /d 1 /f
方案二:禁用文件区域标记(不推荐)
通过组策略禁用文件区域标记功能:
New-Item -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments'
New-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments' -Name 'SaveZoneInformation' -Type DWord -Value 1
注意:此方案会降低系统安全性,不建议在生产环境使用。
未来改进方向
微软 Winget 开发团队表示将在未来版本中:
- 为自定义源添加与官方源相同的区域标记处理逻辑
- 可能通过管理员设置或组策略提供配置选项
- 优化非默认源的安全标记处理机制
最佳实践建议
- 对于企业内网部署,优先将内部源域名加入信任区域
- 在自动化脚本中添加区域检查逻辑
- 避免在生产环境完全禁用安全标记功能
- 关注 Winget 版本更新,及时应用相关修复
通过以上解决方案,用户可以有效规避 MotW 安全警告导致的安装挂起问题,确保 Winget 在各种环境下都能稳定运行。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0126- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniCPM-V-4.6这是 MiniCPM-V 系列有史以来效率与性能平衡最佳的模型。它以仅 1.3B 的参数规模,实现了性能与效率的双重突破,在全球同尺寸模型中登顶,全面超越了阿里 Qwen3.5-0.8B 与谷歌 Gemma4-E2B-it。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
热门内容推荐
最新内容推荐
项目优选
收起
暂无描述
Dockerfile
720
4.62 K
Ascend Extension for PyTorch
Python
594
742
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
424
372
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
982
974
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
865
126
deepin linux kernel
C
29
16
暂无简介
Dart
966
244
Oohos_react_native
React Native鸿蒙化仓库
C++
345
390
昇腾LLM分布式训练框架
Python
158
187
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.64 K
964