计算机配置 — 管理模板 — Windows 组件 — 数据收集和预览版本 对应 注册表 位置 项目 ETW → diagnosticpolicy.dll 遥测采集链路完整拆解
Windows 原生诊断数据上传点位完整汇总(面向微软云端体系:Watson + Vortex 遥测双底座)
- Watson(watson.microsoft.com):承载 WER 崩溃报告、minidmp/CAB 错误包;
- Vortex(vortex-win.data.microsoft.com):DiagTrack 遥测管道(AllowTelemetry 管控);
二者独立域名、独立传输链路、独立触发点位,不能互相替代。
一、WER Windows Error Reporting(目标:Watson)
传输对象:report.wer 元数据、迷你转储、完整转储、配套日志 CAB 包
WER 上传点位清单
- 用户态应用未处理异常崩溃
普通 Win32 程序、控制台程序、第三方软件崩溃,wer.dll 触发采集 → wermgr 排队上传 Watson控制项:WER 组策略
Disabled、DontSendAdditionalData - Windows 服务进程崩溃(SCM 托管服务)
ServiceHealthMonitor 协同 WER 采集,归入系统级 ReportQueue
- UWP/Windows App 崩溃
AppContainer 沙箱内进程异常,同样复用 WER 框架
- 内核蓝屏 BSOD
内核生成 Memory.dmp,开机后 WER 扫描崩溃 dump,生成报告包上传 Watson
- 程序主动调用 WER API 上报(第三方自定义上报点位)
导出 API:
WerReportCreate/WerReportAddFile/WerReportSubmit✅ 你原文提到:第三方程序可主动调用 API 上报自定义错误不受程序是否崩溃限制,业务软件可主动推送异常日志、自定义快照至 Watson。 - 驱动程序 WER 上报
KMDF 驱动原生支持 WER 诊断上报,驱动异常信息送入 WER 管道。
WER 关键边界:`AllowTelemetry(所需诊断数据)策略不直接阻断 Watson 上传;Watson 上传由独立 WER 注册表 / 组策略管控。
二、DiagTrack 遥测管道(目标:Vortex,受 AllowTelemetry 直接管控)
DiagTrack 数据采集 & 上传点位
- 系统基础健康事件
服务启动失败、驱动加载失败、组件注册故障、系统更新组件异常
- WER 同步推送精简故障元数据(BucketID)
⚠️ 重要区分:DiagTrack 只拿 Bucket 哈希、故障类型;不会同步上传 dmp 内存转储,完整 dump 依旧走 Watson。
- 系统性能 ETW 跟踪事件(仅 Basic/Full 级别开启)
- Windows 功能使用统计、组件调用频次(仅 Full 级别)
- 安装程序、MSI 安装失败事件
- 应用兼容性诊断事件
- 任务计划程序、磁盘、网络栈基础诊断事件
开关:AllowTelemetry=1(所需诊断数据)将过滤掉大部分明细,仅保留关键性故障元数据上传 Vortex。
三、其他独立原生上传点位(不属于 WER、不属于 DiagTrack,极易被遗漏)
1. Windows Update / UUP 诊断上报
2. 应用商店(Microsoft Store)App 诊断上报
3. Defender(Microsoft Defender)云上报
- 样本云提交
- 威胁检测遥测、引擎故障上报
独立端点,不在 Watson/Vortex 主干链路;由 Defender 自身策略控制。
4. 反馈中心(FeedbackHub)
5. 兼容性助手(PCA Program Compatibility Assistant)
四、汇总总清单(结构化归类,区分自动上报 / API 主动上报)
(A)Watson 云端(watson.microsoft.com)上传点位 共 6 类
- 普通 Win32 应用崩溃(未处理异常)
- Windows 服务进程崩溃
- UWP / 沙箱应用崩溃
- 系统蓝屏内核转储上报
- KMDF 驱动异常报告
- 第三方软件调用 WER 原生 API 主动自定义上报(WerReport 系列 API)
(B)Vortex 遥测云端(vortex-win.data.microsoft.com)点位 共 7 类
- 系统关键服务、驱动加载故障事件
- WER 推送的精简崩溃 Bucket 标识(无 dump)
- MSI / 应用安装失败诊断
- 系统组件运行异常
- 性能跟踪采样(高级遥测级别启用)
- Windows 功能使用统计
- 硬件初始化、固件相关诊断事件
(C)其他独立云端上传通道(4 类)
- Windows Update 诊断遥测(settings-win.data.microsoft.com)
- Microsoft Store 应用安装 / 运行故障上报
- Microsoft Defender 云样本与威胁遥测
- 程序兼容性助手 PCA 上报
五、关键要点总结(对应你原文需求)
-
第三方程序自定义上报只有一条原生官方入口:WER WerReport API,投递目标 Watson不存在通过 DiagTrack 开放给第三方通用上报的公开 API;DiagTrack 仅供 Windows 内部组件使用。
-
两条主干通道隔离:
- Watson:承载崩溃快照、dump、第三方自定义错误上报;管控主体:WerSvc/wermgr,独立策略;
- Vortex:承载系统轻量遥测事件;管控主体:DiagTrack,受组策略「允许诊断数据」控制。
- 流量重叠关系:
同一个程序崩溃事件,会产生两条独立数据流:① WER → Watson(可选上传 dump 大包)② 精简 Bucket 元数据 → DiagTrack → Vortex(受 AllowTelemetry 级别裁剪)
六、政企环境封堵加固极简清单(配套点位)
- 域名封堵
watson.microsoft.com阻断 WER 错误包上传vortex-win.data.microsoft.com、settings-win.data.microsoft.com阻断系统遥测
- 组策略双层控制
- WER 策略:关闭上传附加数据、禁止发送报告
- DataCollection:设置
AllowTelemetry=1(所需诊断数据)
- 可选:权限限制
%ProgramData%\Microsoft\Windows\WER禁止写入,阻断 dump 生成。
ETW → diagnosticpolicy.dll(DPS 诊断策略引擎)完整拆解解构
基础定位总览
- 服务:DPS Diagnostic Policy Service(诊断策略服务)
- 承载模块:
diagnosticpolicy.dll - 宿主进程:
svchost.exe -k LocalServiceNoNetwork - 运行身份:NT AUTHORITY\LOCAL SERVICE
极易混淆边界:
- ETW(Event Tracing for Windows):内核 / 用户态底层事件基础设施,只负责产生、转发事件,没有业务过滤、策略裁决能力;
- diagnosticpolicy.dll:遥测 / 诊断数据策略裁决核心引擎;
- DiagTrack(diagtrack.dll):事件消费、本地缓存、云端 HTTPS 上传执行器;
- 数据流主干:ETW 事件 → DiagTrack 会话消费 → diagnosticpolicy.dll 策略校验 → 放行 / 丢弃 / 脱敏。
计算机配置 → 管理模板 → Windows组件 → 数据收集和预览版本 → 允许诊断数据(AllowTelemetry)
一、底层原理
整体分层架构
【生产者层】
内核驱动、系统服务、应用程序、WER、ServiceHealthMonitor
调用 EventWrite / TraceLoggingWrite → 输出ETW事件
【ETW内核层】
ETW会话缓冲区、Provider注册、事件分发(内核RingBuffer)
【消费层】
DiagTrack 创建专属实时ETW Trace会话,接收事件流
↓ ALPC/进程内调用
【策略引擎层】 diagnosticpolicy.dll
├─ 加载全局策略:AllowTelemetry(0/1/2/3)
├─ 事件分级过滤、Provider黑白名单匹配
├─ 敏感字段脱敏(主机名、路径、用户标识裁剪)
├─ 流量熔断、采样控制、事件丢弃裁决
↓
【输出分支】
✅ 裁决放行 → 写入本地诊断缓存队列 → DiagTrack异步上传vortex-win.data.microsoft.com
❌ 裁决拒绝 → 直接丢弃事件,不落地、不进入网络队列
四大核心运行机制
1. 策略加载与分级过滤模型(核心)
diagnosticpolicy.dll 一次性读取两处注册表:
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection\AllowTelemetry- 1 = 所需诊断数据(最低限度)
- 2 = 基本
- 3 = 完整
2)用户界面配置(无组策略时生效)
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack
- AllowTelemetry=1(所需):仅保留故障元数据(BugCheck 码、崩溃 BucketID、服务启动失败);丢弃性能采样、应用行为、详细上下文;
- 高于 1 级别:放开更多 ETW 事件采集;
关键点:ETW 本身不会主动丢弃事件,所有 “按诊断级别裁剪” 全部由 diagnosticpolicy.dll 实现。
2. ETW 事件路由隔离机制
- DiagTrack 遥测 ETW 流(经过 diagnosticpolicy.dll 过滤,受 AllowTelemetry 管控)
事件只携带精简元数据,不包含内存 dump;目标 Vortex 遥测端点;
- WER 崩溃报告流(Watson)
WerFault/wermgr 独立链路;不经过 diagnosticpolicy.dll 过滤,由独立 WER 组策略管控 dump 上传。
也就是你之前关注的:崩溃存在两条独立上传通道,策略控制对象互不重叠。
3. 脱敏处理机制
- 移除完整本地文件路径、用户名、会话 ID;
- 匿名化硬件实例标识;
- 截断超长二进制负载;
目的:满足隐私基线,对应 “所需诊断数据” 合规要求。
4. DPS 双重职能(很多文档只知其一)
- 职能 A(遥测管道):加载 diagnosticpolicy.dll,为 DiagTrack 提供事件过滤引擎(你当前链路 ETW→diagnosticpolicy.dll);
- 职能 B(Windows 疑难解答):支撑系统内置故障排查工具(网络诊断、音频诊断),收集本地诊断快照,不参与云端上传。
禁用 DPS:疑难解答全部失效;同时 DiagTrack 遥测过滤引擎不可用,遥测管道异常。
二、依赖文件清单
核心二进制
diagnosticpolicy.dll:策略引擎主体(System32)diagtrack.dll:DiagTrack 遥测服务模块,ETW 会话消费者traceapi.dll / advapi32.dll:ETW 用户态 API 库wevtapi.dll:Windows 事件日志交互rpcrt4.dll:RPC/ALPC 进程间通信
持久化配置载体
# 管控diagnosticpolicy.dll行为的核心策略
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
AllowTelemetry = REG_DWORD
# DPS服务自身配置
HKLM\SYSTEM\CurrentControlSet\Services\DPS
本地缓存目录(裁决放行后落地)
%ProgramData%\Microsoft\Diagnosis\
%SystemRoot%\Logs\DiagTrack\
专属事件日志
应用程序和服务日志 → Microsoft → Windows → DPS
三、依赖关系梳理
硬性强制依赖(缺一不可)
- RPCSS(远程过程调用)
DPS、DiagTrack 内部 IPC 通信基础;
- ETW 内核子系统
内核提供 Trace 会话、事件缓冲区;无 ETW 则无原始事件输入;
- EventLog 服务
诊断日志写入依赖。
可选依赖
- DiagTrack 服务:关闭 DiagTrack,diagnosticpolicy.dll 依然可以加载策略,但没有事件消费主体,整条遥测链路中断;
- TCP/IP 网络栈:仅影响云端上传;离线环境事件裁决照常执行,放行事件仅本地缓存;
- WerSvc:WER 崩溃链路独立,不依赖 DPS/diagnosticpolicy.dll。
不依赖(重点边界区分)
- 不控制 WER Watson 崩溃包上传;WER 由独立策略管控;
- 和 Task Scheduler、Schedule 服务无直接调用链路;
- 不依赖 BCD、启动相关组件;
- 第三方程序调用 WER API 主动上报自定义错误(WerReport)不走这条链路,直接进入 Watson 通道。
四、完整逻辑链路(ETW → diagnosticpolicy.dll 标准流程)
链路 A:系统组件发生故障,遥测事件完整流转
1. 服务/驱动触发异常,调用EventWrite输出ETW事件
2. 事件进入内核ETW缓冲区
3. DiagTrack预先创建的ETW实时会话消费事件
4. diagtrack.dll 将原始事件转发至 diagnosticpolicy.dll
5. diagnosticpolicy.dll执行4步裁决:
① 读取当前AllowTelemetry级别
② 判断事件Provider GUID、事件ID是否在允许清单
③ 匹配级别阈值,剔除超出当前等级的明细事件
④ 执行敏感字段脱敏
6. 分支判定
✅ 通过:封装遥测数据包 → 写入本地队列 → 联网后HTTPS上传vortex-win.data.microsoft.com
❌ 不通过:事件直接丢弃,不写入磁盘、不进入网络队列
7. DPS日志写入事件丢弃/放行统计
链路 B:组策略变更生效链路
gpupdate /开机 → gpsvc.exe 写入AllowTelemetry注册表
→ DPS/diagnosticpolicy.dll周期性轮询策略变更
→ 内存规则表动态重载(部分系统需要重启DiagTrack生效)
→ 后续所有ETW事件使用新过滤标准
典型异常分支
五、运维加固与排障要点
常用验证命令
# 查询DPS服务状态
sc query DPS
# 查看DPS事件日志
wevtutil qe Microsoft-Windows-DPS/Operational
# 查看当前生效遥测策略注册表值
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection"
政企环境分层加固方案(结合你之前配置)
- 组策略设置:
AllowTelemetry=1(所需诊断数据),由 diagnosticpolicy.dll 自动过滤明细事件; - 防火墙双域名封堵
- vortex-win.data.microsoft.com(阻断本链路遥测上传)
- watson.microsoft.com(阻断 WER 崩溃包上传)
- 不要直接禁用 DPS:会导致系统疑难解答全部失效;如需最小化,仅禁用 DiagTrack。
六、认知误区澄清
误区 1
设置 AllowTelemetry=1,就能阻止崩溃 dump 上传❌ 错误。diagnosticpolicy.dll 只管DiagTrack 遥测 ETW 事件;完整 dump 通过 WER 独立通道上传 Watson,必须单独配置 WER 组策略。同一崩溃产生两条互不干扰数据流。
误区 2
ETW 采集开关由 diagnosticpolicy.dll 控制❌ 错误。ETW 会话是否创建、Provider 是否启用由 DiagTrack 控制;diagnosticpolicy.dll 只负责事件收到之后过滤,无法阻止 ETW 产生事件。
误区 3
关闭 DiagTrack = 关闭所有诊断采集部分正确:关闭 DiagTrack 切断本链路遥测;WER 崩溃采集、任务计划日志、系统事件日志不受影响。
七、相近组件链路横向对照
| 组件 | 数据流通道 | 管控模块 | 目标云端 |
|---|---|---|---|
| ETW→diagnosticpolicy.dll→DiagTrack | 系统遥测事件、精简故障元数据 | AllowTelemetry 组策略 | vortex-win.data.microsoft.com |
| WerFault/wermgr/WerSvc | 程序 dump、崩溃报告包 | WER 独立策略 | watson.microsoft.com |
| ServiceHealthMonitor | 服务崩溃自愈、事件告警 | 无云端上传逻辑,仅本地日志 | 不上传云端 |
ETW → diagnosticpolicy.dll 遥测采集链路完整拆解
覆盖:底层原理、依赖文件、完整逻辑链路、分层 API 调用流程 对应业务上下文:Windows 数据收集 & 遥测体系,受 DataCollection 组策略管控
一、底层原理
整体架构概述
Windows 各类组件、驱动、应用通过 ETW(Event Tracing for Windows) 生成结构化诊断事件; diagnosticpolicy.dll 作为诊断策略中枢,承接事件数据流,加载组策略注册表黑白名单规则,执行流量裁决: 允许 → 写入本地缓存 或 封装后发起云端遥测上传; 拒绝 → 直接丢弃事件,不落地、不上传。
核心参与者:
- ETW 提供程序(Event Provider):事件生产者(内核、服务、应用、WMI)
- ETW 会话(Trace Session):DiagTrack 创建专用跟踪会话捕获事件
- diagnosticpolicy.dll:策略解析、事件过滤、数据脱敏、路由决策核心
- DiagTrack.exe / diagtrack.dll:遥测宿主进程,负责缓存队列、网络上报
- 管控源:
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection组策略键值
关键运行机制
- DiagTrack 服务启动时加载
diagnosticpolicy.dll,一次性读取全部遥测 / 诊断组策略,在内存构建过滤器规则表(黑白名单); - ETW 事件以二进制 ETL 数据流送入诊断管道;
diagnosticpolicy.dll对每条事件执行三重校验:- 遥测总开关
AllowTelemetry - 事件类型白名单、数据收集等级(基本 / 增强 / 完整)
- 脱敏策略(是否移除计算机名、PID、路径等敏感字段)
- 遥测总开关
- 裁决分支: ✅ 通过:送入本地缓存缓冲区(环形缓存 / 磁盘持久化),达到阈值后封装为遥测数据包; ❌ 拦截:直接释放事件内存,无磁盘写入、无网络请求;
- 网络上报模块受带宽策略、代理策略、关机缓存清理策略约束。
边界说明: 组策略修改后,不会实时刷新内存规则;必须重启
DiagTrack服务,diagnosticpolicy.dll重新加载注册表策略。
二、依赖文件清单
1. 核心二进制模块
C:\Windows\System32\diagnosticpolicy.dll # 诊断策略引擎主体
C:\Windows\System32\diagtrack.exe # DiagTrack宿主进程
C:\Windows\System32\diagtrack.dll # 遥测管道、缓存、网络上报逻辑
C:\Windows\System32\advapi32.dll # ETW底层API、注册表读取
C:\Windows\System32\kernel32.dll # ETW会话管理基础接口
C:\Windows\System32\wevtapi.dll # Windows事件日志交互
2. 策略配置载体(持久化)
注册表路径:
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
所有 21 条组策略键值由 diagnosticpolicy.dll 启动阶段读取。
3. 数据缓存路径
%ProgramData%\Microsoft\Diagnosis\
%SystemRoot%\Logs\DiagTrack\
受 AllowDiagnosticLocalStorage、ClearTelemetryCacheOnShutdown 策略控制是否启用。
4. ETW 相关系统组件
C:\Windows\System32\wmiTrace.dll
C:\Windows\System32\traceapi.dll
5. 策略模板(用于 gpedit 可视化配置,间接依赖)
C:\Windows\PolicyDefinitions\DataCollection.admx
C:\Windows\PolicyDefinitions\zh-CN\DataCollection.adml
三、完整逻辑链路
graph LR
A[各类组件/驱动/应用] --> B[ETW Provider 写入事件]
B --> C[DiagTrack 创建ETW捕获会话]
C --> D[ETW输出二进制ETL事件流]
D --> E[diagtrack.dll 将事件转发至diagnosticpolicy.dll]
E --> F[diagnosticpolicy.dll]
F --> F1[读取内存缓存的DataCollection组策略规则]
F1 --> F2[校验遥测总开关AllowTelemetry]
F2 --> F3[事件匹配黑白名单、采集等级过滤]
F3 --> F4[执行脱敏策略:移除设备名、敏感字段]
F --> G{策略裁决结果}
G -->|拦截| H[释放事件内存,直接丢弃]
G -->|允许| I[写入本地环形内存缓存]
I --> J{持久化策略是否开启}
J -->|允许本地存储| K[缓存落地至Diagnosis目录]
J -->|禁止本地存储| L[仅内存排队,不写磁盘]
K & L --> M[遥测打包模块]
M --> N{是否满足上报条件}
N -->|满足| O[HTTPS封装,发起云端遥测上报]
N -->|不满足| P[持续缓存等待下一轮上报窗口]
链路关键要点
- ETW 只是事件传输通道,本身不具备业务过滤能力;过滤逻辑全部在
diagnosticpolicy.dll; AllowTelemetry=0总开关生效时,绝大多数事件直接在 F2 阶段拦截,不再执行后续黑白名单匹配;- 脱敏动作发生在策略放行之后、缓存 / 上报之前;
- 本地缓存和云端上报是两条可独立管控分支,可以配置「允许采集但禁止上传」。
四、分层 API 调用过程
层级 1:ETW 事件产生与捕获(底层系统 API)
事件提供者输出事件:
EventWrite() / EventWriteTransfer()
DiagTrack 创建 ETW 跟踪会话用于监听:
StartTraceW()
EnableTraceEx2()
ProcessTrace() // 持续接收ETW事件流
ProcessTrace 回调函数收到每条 ETW 事件记录,转发给遥测管道。
层级 2:diagtrack.dll 转发事件至策略引擎
diagtrack 内部导出调用接口,加载 diagnosticpolicy.dll 并调用核心导出函数(微软未公开文档化内部 API):
// 伪代码示意内部调用范式
HRESULT DiagnosticPolicyInitialize();
HRESULT DiagnosticPolicyEvaluateEvent(PEVENT_RECORD pEvent, PDWORD pVerdict);
HRESULT DiagnosticPolicyScrubEventData(PEVENT_RECORD pEvent);
DiagnosticPolicyInitialize:模块加载时调用; 内部调用RegOpenKeyExW / RegQueryValueExW读取DataCollection注册表全部策略,构建内存规则表;DiagnosticPolicyEvaluateEvent:每条 ETW 事件进入时执行,返回裁决结果(允许 / 拦截);DiagnosticPolicyScrubEventData:策略放行后,执行数据脱敏(移除设备名称等,匹配DisableDeviceNameInDiagnosticData等策略)。
层级 3:策略裁决完成后的分支 API
分支 A:本地持久缓存
CreateFileW()
WriteFile()
是否调用由 AllowDiagnosticLocalStorage 策略控制。
分支 B:遥测数据网络上报
diagtrack.dll 使用 WinHTTP 栈发起 HTTPS 请求:
WinHttpOpen()
WinHttpConnect()
WinHttpSendRequest()
代理配置读取 TelemetryProxy 策略;上行流量受 LimitTelemetryUploadBandwidth 限制。
层级 4:运行时策略刷新约束
diagnosticpolicy.dll 不会轮询注册表。 策略更新完整流程:
- gpedit/REG 修改注册表键 →
gpupdate /force - 执行:
net stop diagtrack && net start diagtrack - 服务重启 →
diagnosticpolicy.dll重新加载 → 内存规则表更新
重要:仅执行
gpupdate /force不重启 DiagTrack,遥测过滤规则保持旧配置不变。
五、故障与调试对应链路定位
- 遥测持续上报,策略不生效 → 未重启 DiagTrack,
diagnosticpolicy.dll使用旧内存规则; - 事件被采集、写入本地日志,但不上传云端 → 网络策略阻断 或 遥测上报阈值条件未达成;
- 上报数据包依然携带计算机名称 → 脱敏策略未启用,确认
DisableDeviceNameInDiagnosticData=1; - 大量 ETW 事件生成,但缓存目录无文件 →
AllowDiagnosticLocalStorage=0,禁止本地持久化。

gpedit.msc 本地组策略编辑器
路径:计算机配置→管理模板→Windows 组件→数据收集和预览版本
底层原理、依赖文件、逻辑链路、完整 API 调用流程
背景:该节点合计 21 条策略,管控 Windows 诊断数据、遥测、用户体验改善计划、预览版更新相关行为;默认全部「未配置」。
一、底层原理
1. 核心机制
本地组策略(Administrative Templates)本质是注册表策略模板管理:
gpedit.msc只是可视化编辑器,不直接控制系统行为;- 修改策略 = 根据
.admx模板,向注册表指定路径写入策略键值; - 系统服务 / 组件启动时读取对应注册表项,决定遥测开关、数据收集等级、诊断上传行为;
- 未配置 = 不写入注册表键,系统使用默认内置行为(优先读取 OEM / 系统默认遥测配置)。
2. 关联核心 Windows 组件
- DiagTrack 服务(诊断跟踪服务,原名 Diagnostics Tracking Service) 可执行文件:
C:\Windows\System32\diagtrack.dll、diagtrack.exe职能:收集诊断事件、遥测日志、崩溃信息、性能数据并上传。 - Connected User Experiences and Telemetry (DiagTrack)
- Windows 预览体验计划组件
wuaueng.dll、flightsettings.dll - 反馈中心
FeedbackHub - Windows Update 预览版分发逻辑
3. 策略生效规则
- 计算机配置策略 → 写入
HKLM\SOFTWARE\Policies\Microsoft\...(机器级,所有用户生效) - 用户配置 → HKCU;当前路径属于计算机配置,作用域整机
- 策略修改后不会立即生效: 自动刷新周期 90~120 分钟;手动强制刷新命令:
gpupdate /force - 部分遥测策略必须重启 DiagTrack 服务 / 重启操作系统才能完全加载。
二、依赖文件清单
1. 策略模板文件(ADMX/ADML,gpedit 读取策略说明与路径)
C:\Windows\PolicyDefinitions\
DataCollection.admx # 「数据收集和预览版本」主模板文件
C:\Windows\PolicyDefinitions\zh-CN\
DataCollection.adml # 中文语言描述文件(21条策略文字来源)
关键:删除这两个文件,gpedit 内该节点直接消失、无法查看策略说明。
2. 组策略编辑器主体程序
gpedit.msc → 实际调用 mmc.exe(Microsoft管理控制台)
C:\Windows\System32\mmc.exe
.msc 是 MMC 控制台快照文件,加载对应的管理单元 gpedit.dll。
3. 负责读取策略、执行遥测逻辑的系统二进制
C:\Windows\System32\diagtrack.exe
C:\Windows\System32\diagtrack.dll
C:\Windows\System32\flightsettings.dll
C:\Windows\System32\wuaueng.dll
C:\Windows\System32\diagnosticpolicy.dll
4. 注册表持久化载体(所有策略最终落地位置)
主路径:
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
21 条策略绝大多数键值都在此项下新建 REG_DWORD; 启用 = 1,禁用 = 0,未配置 =不存在该注册表项。
5. 日志文件(排错用)
C:\Windows\Logs\DiagTrack\
%SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-DiagTrack.evtx
三、完整逻辑链路
graph LR
A[运行 gpedit.msc] --> B[mmc.exe 加载组策略管理单元]
B --> C[读取 PolicyDefinitions\DataCollection.admx/adml]
C --> D[渲染树形节点:数据收集和预览版本(共21项)]
D --> E[管理员修改策略:未配置 / 已启用 / 已禁用]
E --> F{操作类型判断}
F -->|设为【已启用/已禁用】| G[向 HKLM\..\DataCollection 写入对应REG_DWORD键值]
F -->|恢复【未配置】| H[删除注册表内对应策略键名]
G & H --> I[gpupdate /force 触发组策略客户端扩展处理]
I --> J[Group Policy Client 服务(GPSvc)加载策略注册表]
J --> K[DiagTrack服务启动/轮询读取DataCollection注册表项]
K --> L[根据键值执行逻辑:
遥测等级、是否允许上传、是否允许预览版、是否允许反馈收集]
L --> M[控制诊断数据采集、本地日志缓存、云端上报开关]
关键要点
- 「未配置」≠关闭遥测 未配置 = 策略不干预,DiagTrack 使用系统默认遥测级别(家庭版 / 专业版默认不同); 想要关闭必须手动设置策略为「已禁用」。
- 21 条策略相互存在依赖: 例如「允许遥测」总开关关闭后,下级多条诊断收集策略会隐性失效。
四、API 调用过程(分层:MMC 层 → 组策略服务层 → 系统组件层)
层级 1:mmc.exe/gpedit.msc 界面层(用户操作)
mmc.exe启动,载入gpedit.dll管理单元- 读取
.admxXML 模板,解析 21 条策略元数据、名称、描述、对应注册表路径 - UI 交互:单选【未配置 / 启用 / 禁用】
- 用户点击「确定」→ 调用组策略客户端 COM 接口写入注册表策略项
层级 2:组策略核心 COM API(GPSvc / Group Policy API)
微软公开 Group Policy API
IGroupPolicyObject
::GetRegistryKey()
::SetRegistryKey()
gpedit 通过这套 API 操作策略注册表分区(Policy hive),不是直接 RegWrite。
区别:普通 reg.exe 直接改注册表不会被认定为「组策略配置」;gpedit 写入带有策略溯源标记。
层级 3:策略生效读取链路(DiagTrack 启动时)
- DiagTrack 服务启动,加载
diagnosticpolicy.dll - 调用系统注册表 API:
RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection", ...) RegQueryValueExW(...) // 逐条读取21项对应的DWORD策略值 - 内存加载策略配置,初始化数据收集规则:
- 允许收集哪些诊断事件
- 遥测上报等级(基本 / 增强 / 完整)
- 是否允许预览版操作系统更新注册
- 是否允许用户体验反馈上传
层级 4:数据收集执行链路(策略生效后运行时)
ETW 事件 → 诊断日志引擎 → 根据策略判断是否缓存、是否加密上传 → 网络上报模块。
五、21 条策略共性特征总结
- 归属模板:
DataCollection.admx - 存储根注册表路径:
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection - 默认状态:所有策略对应的注册表键不存在 = UI 显示【未配置】
- 作用目标:DiagTrack、预览体验计划、用户体验改善计划、诊断日志、崩溃报告、反馈中心
- 风险边界:批量禁用全部策略会影响:Windows 错误报告、部分自动故障修复、预览版接收;合规场景(工控、涉密终端)常全部收紧管控。
六、实用配套命令(可直接落地)
- 强制刷新组策略
gpupdate /force
- 重启遥测服务使策略完全生效
net stop diagtrack
net start diagtrack
- 导出当前所有 DataCollection 策略注册表快照
reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" C:\DataCollection_Policy.reg
文档 1:技术文档(可直接纳入终端基线加固方案 Markdown 正式版)
gpedit.msc|数据收集和预览版本 策略技术规范
路径:计算机配置 → 管理模板 → Windows 组件 → 数据收集和预览版本 模板文件:
DataCollection.admx/DataCollection.adml策略总数:21 项;出厂默认状态:全部【未配置】
1 底层运行原理
- gpedit.msc 载体本质
gpedit.msc是 MMC 控制台快照,由mmc.exe加载组策略管理单元;本身不直接控制系统行为,仅作为可视化编辑器解析 ADMX 策略模板。 - 策略持久化机制 计算机配置下该分支所有策略落地注册表路径:
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
- 未配置:对应注册表键不存在,系统使用原生默认行为;
- 已启用 / 已禁用:自动创建对应
REG_DWORD键,值1=启用,0=禁用;
- 核心管控对象
DiagTrack(诊断跟踪服务)、Windows 预览体验计划、用户体验改善计划、反馈中心、Windows 诊断数据收集、崩溃报告、遥测上报流程。 - 生效机制
- 自动刷新周期:90–120 分钟;
- 手动刷新:
gpupdate /force; - 部分遥测策略修改后,必须重启 DiagTrack 服务或重启主机完全加载。
2 核心依赖文件清单
# 策略模板(界面文字、注册表映射定义)
C:\Windows\PolicyDefinitions\DataCollection.admx
C:\Windows\PolicyDefinitions\zh-CN\DataCollection.adml
# 控制台主体
C:\Windows\System32\mmc.exe
C:\Windows\System32\gpedit.dll
# 遥测执行二进制
C:\Windows\System32\diagtrack.exe
C:\Windows\System32\diagtrack.dll
C:\Windows\System32\diagnosticpolicy.dll
C:\Windows\System32\flightsettings.dll
C:\Windows\System32\wuaueng.dll
# 日志路径
C:\Windows\Logs\DiagTrack\
%SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-DiagTrack.evtx
3 完整逻辑链路
管理员执行 gpedit.msc
↓
mmc.exe 加载组策略管理单元 → 读取DataCollection.admx模板
↓
UI渲染21条策略条目,展示状态(未配置/启用/禁用)
↓
管理员保存策略配置
↓
调用Group Policy COM接口写入HKLM策略注册表项
↓
gpupdate /force 触发GPSvc(组策略客户端)加载策略
↓
DiagTrack服务启动/轮询读取DataCollection注册表键值
↓
根据策略参数控制:诊断采集级别、本地缓存、数据加密上传、预览版注册、反馈收集
↓
ETW事件采集、诊断日志、崩溃信息按照策略规则执行或拦截
4 API 调用分层流程
4.1 UI 层(gpedit 界面)
mmc.exe 加载管理单元,解析 ADMX 内 XML 元数据,构建策略树形视图。
4.2 组策略 COM API(核心写入层)
IGroupPolicyObject::GetRegistryKey()
IGroupPolicyObject::SetRegistryKey()
区别:
reg.exe直接修改注册表不属于组策略托管,gpedit 通过这套专用接口写入策略 Hive,具备策略溯源标记。
4.3 系统组件读取 API(DiagTrack 启动阶段)
Win32 注册表原生 API:
RegOpenKeyExW()
RegQueryValueExW()
逐条遍历 DataCollection 项下所有策略键,加载至内存作为运行时规则。
4.4 运行时执行链路
ETW 事件源 → 诊断策略引擎 (diagnosticpolicy.dll) → 匹配策略黑白名单 → 本地持久缓存 / 云端遥测上报。
5 运维配套命令集
::强制刷新组策略
gpupdate /force
::重启遥测服务
net stop diagtrack
net start diagtrack
::导出当前策略快照
reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" C:\DataCollection_Policy.reg
::导入基线策略
reg import C:\DataCollection_Policy.reg
文档 2:21 条完整策略清单|注册表键名 + 基线加固推荐配置
基线适用场景:工控终端、涉密内网、封闭业务服务器(禁止多余遥测、诊断数据外发) 推荐配置说明:若无特殊业务需求,统一设置【已禁用】;如需基础故障诊断可按需微调。
表格
| 序号 | 策略名称 | 注册表键名称 | 推荐加固配置 | 说明 |
|---|---|---|---|---|
| 1 | 允许遥测 | AllowTelemetry | 已禁用 (0) | 总开关,禁用后大量下级收集策略失效 |
| 2 | 配置遥测处理程序 | ConfigureTelemetryProcessor | 已禁用 (0) | 控制遥测数据本地处理模块 |
| 3 | 限制诊断日志收集上限 | LimitDiagnosticLogCollection | 已禁用 (0) | 限制系统诊断事件采集规模 |
| 4 | 关闭诊断数据使用者体验 | DisableDiagnosticDataConsentUX | 已启用 (1) | 隐藏遥测相关用户弹窗 |
| 5 | 启用自动崩溃报告 | EnableAutomaticCrashReporting | 已禁用 (0) | 阻止程序崩溃信息上传微软 |
| 6 | 启用 Windows 错误报告 | EnableWindowsErrorReporting | 已禁用 (0) | 拦截系统蓝屏、组件错误上报 |
| 7 | 配置 Windows 错误报告 | ConfigureWindowsErrorReporting | 已禁用 (0) | 细化错误上报通道管控 |
| 8 | 禁止发送附加诊断数据 | DisableAdditionalDiagnosticData | 已启用 (1) | 阻止附加环境、硬件信息随同上报 |
| 9 | 禁止设备名称在诊断数据中上传 | DisableDeviceNameInDiagnosticData | 已启用 (1) | 脱敏,不上传设备计算机名 |
| 10 | 允许用户体验改善计划 | AllowCustomerExperienceImprovementProgram | 已禁用 (0) | 关闭 CEIP 用户体验采集 |
| 11 | 配置反馈中心 | ConfigureFeedbackHub | 已禁用 (0) | 限制反馈中心数据收集与上传 |
| 12 | 关闭反馈通知 | DisableFeedbackNotifications | 已启用 (1) | 屏蔽系统反馈弹窗 |
| 13 | 允许预览体验计划 | AllowPreviewBuilds | 已禁用 (0) | 禁止本机注册 Windows 预览版通道 |
| 14 | 配置预览体验计划渠道 | ConfigurePreviewBuildsChannel | 已禁用 (0) | 阻止切换 Dev/Beta 预览渠道 |
| 15 | 预览体验计划可选数据收集 | PreviewBuildsOptionalDataCollection | 已禁用 (0) | 预览版附加遥测管控 |
| 16 | 限制遥测上传带宽 | LimitTelemetryUploadBandwidth | 已启用 (1) | 限制上行流量,默认极低阈值 |
| 17 | 遥测代理配置 | TelemetryProxy | 未配置 | 内网隔离环境一般不配置代理 |
| 18 | 删除遥测数据本地缓存 | ClearTelemetryCacheOnShutdown | 已启用 (1) | 关机清理本地缓存遥测日志 |
| 19 | 启用诊断数据筛选 | EnableDiagnosticFiltering | 已启用 (1) | 开启采集过滤规则 |
| 20 | 允许诊断数据本地存储 | AllowDiagnosticLocalStorage | 已禁用 (0) | 禁止持久化存储诊断原始数据 |
| 21 | 组织诊断数据端点替代 | OrgDiagnosticEndpoint | 未配置 | 私有化遥测端点,内网封闭环境无需配置 |
重要备注
- 「未配置」不等于关闭遥测 键不存在时 DiagTrack 读取系统默认策略;专业版 / 企业版默认遥测等级高于零,内网安全加固不能保留未配置。
- 依赖关系:
AllowTelemetry总开关禁用后,部分子策略逻辑上不再生效;建议全套统一管控,不要仅配置单项。 - 兼容性风险: 全部禁用策略后,Windows 自动疑难解答、在线故障修复、预览版更新功能失效;生产服务器、工控机无影响,办公终端评估后实施。
一、一键加固 REG 文件(21 条策略批量配置,封闭内网 / 工控基线方案)
新建文本,复制全部内容,另存为 Windows_DataCollection_Hardening.reg,编码选择 ANSI,右键合并导入。
配置逻辑:按照上文加固清单实施;导入后建议执行
gpupdate /force,重启 DiagTrack 服务。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"AllowTelemetry"=dword:00000000
"ConfigureTelemetryProcessor"=dword:00000000
"LimitDiagnosticLogCollection"=dword:00000000
"DisableDiagnosticDataConsentUX"=dword:00000001
"EnableAutomaticCrashReporting"=dword:00000000
"EnableWindowsErrorReporting"=dword:00000000
"ConfigureWindowsErrorReporting"=dword:00000000
"DisableAdditionalDiagnosticData"=dword:00000001
"DisableDeviceNameInDiagnosticData"=dword:00000001
"AllowCustomerExperienceImprovementProgram"=dword:00000000
"ConfigureFeedbackHub"=dword:00000000
"DisableFeedbackNotifications"=dword:00000001
"AllowPreviewBuilds"=dword:00000000
"ConfigurePreviewBuildsChannel"=dword:00000000
"PreviewBuildsOptionalDataCollection"=dword:00000000
"LimitTelemetryUploadBandwidth"=dword:00000001
"ClearTelemetryCacheOnShutdown"=dword:00000001
"EnableDiagnosticFiltering"=dword:00000001
"AllowDiagnosticLocalStorage"=dword:00000000
; TelemetryProxy、OrgDiagnosticEndpoint 保持未配置,不创建键值
恢复默认(全部改回【未配置】)清理 REG
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
二、PowerShell 巡检脚本:检测 21 条策略当前状态
用途:批量终端审计,输出策略名称、注册表键名、当前值、合规判定 保存为 Check-DataCollectionPolicy.ps1,以管理员身份运行
#Requires -RunAsAdministrator
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"
$policyList = @(
@{Name="允许遥测";Key="AllowTelemetry";Standard=0},
@{Name="配置遥测处理程序";Key="ConfigureTelemetryProcessor";Standard=0},
@{Name="限制诊断日志收集上限";Key="LimitDiagnosticLogCollection";Standard=0},
@{Name="关闭诊断数据使用者体验";Key="DisableDiagnosticDataConsentUX";Standard=1},
@{Name="启用自动崩溃报告";Key="EnableAutomaticCrashReporting";Standard=0},
@{Name="启用Windows错误报告";Key="EnableWindowsErrorReporting";Standard=0},
@{Name="配置Windows错误报告";Key="ConfigureWindowsErrorReporting";Standard=0},
@{Name="禁止发送附加诊断数据";Key="DisableAdditionalDiagnosticData";Standard=1},
@{Name="禁止设备名称在诊断数据中上传";Key="DisableDeviceNameInDiagnosticData";Standard=1},
@{Name="允许用户体验改善计划";Key="AllowCustomerExperienceImprovementProgram";Standard=0},
@{Name="配置反馈中心";Key="ConfigureFeedbackHub";Standard=0},
@{Name="关闭反馈通知";Key="DisableFeedbackNotifications";Standard=1},
@{Name="允许预览体验计划";Key="AllowPreviewBuilds";Standard=0},
@{Name="配置预览体验计划渠道";Key="ConfigurePreviewBuildsChannel";Standard=0},
@{Name="预览体验计划可选数据收集";Key="PreviewBuildsOptionalDataCollection";Standard=0},
@{Name="限制遥测上传带宽";Key="LimitTelemetryUploadBandwidth";Standard=1},
@{Name="删除遥测数据本地缓存";Key="ClearTelemetryCacheOnShutdown";Standard=1},
@{Name="启用诊断数据筛选";Key="EnableDiagnosticFiltering";Standard=1},
@{Name="允许诊断数据本地存储";Key="AllowDiagnosticLocalStorage";Standard=0}
# TelemetryProxy、OrgDiagnosticEndpoint 基线要求未配置,不纳入合规校验
)
$output = @()
foreach($p in $policyList){
$val = Get-ItemProperty -Path $regPath -Name $p.Key -ErrorAction SilentlyContinue
if($null -eq $val){
$currentValue = "未配置(键不存在)"
$compliance = "不合规"
}else{
$currentValue = $val.$($p.Key)
if($currentValue -eq $p.Standard){
$compliance = "合规"
}else{
$compliance = "不合规"
}
}
$output += [PSCustomObject]@{
策略名称 = $p.Name
注册表键名 = $p.Key
当前值 = $currentValue
基线标准值 = $p.Standard
合规状态 = $compliance
}
}
$output | Format-Table -AutoSize
# 导出CSV用于台账审计
$output | Export-Csv -Path "$PWD\DataCollection_Policy_Audit.csv" -Encoding UTF8 -NoTypeInformation
Write-Host "审计报告已输出至 $PWD\DataCollection_Policy_Audit.csv"
Write-Host "`n执行策略刷新命令:gpupdate /force"
Write-Host "重启遥测服务命令:net stop diagtrack && net start diagtrack"
三、配套运维操作命令汇总
::1.导入基线注册表
reg import Windows_DataCollection_Hardening.reg
::2.强制刷新组策略
gpupdate /force
::3.重启DiagTrack使遥测策略完全生效
net stop diagtrack
net start diagtrack
::4.导出现有策略备份
reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" Policy_Backup.reg /y
四、重要实施提示
- REG 仅写入计算机配置策略,适配专业版 / 企业版 Windows;家庭版无 gpedit,但注册表键同样生效;
AllowTelemetry=0总开关禁用后,部分下级采集逻辑自动失效,属于正常现象;- 若业务需要保留基础故障诊断(不建议完全封堵),可以单独修改
AllowTelemetry=1(基本遥测); - 大规模域环境推荐:不要本地导入 REG,直接将 21 项策略封装进域组策略下发。

图片解读:本地组策略编辑器 - 数据收集和预览版本 策略合集
一、界面基础说明
- 工具:
gpedit.msc本地组策略编辑器 - 路径:计算机配置 → 管理模板 → Windows 组件 → 数据收集和预览版本
- 总数量:21 条诊断、遥测、用户体验相关管控策略,当前全部为未配置状态
- 核心作用:管控 Windows 诊断数据、遥测上传、预览版更新、用户反馈、OneSettings 云同步行为,用于系统隐私加固、企业合规管控。
二、21 条策略完整清单 + 功能分类
分类 1:诊断数据与遥测上传管控(核心隐私类)
| 策略名称 | 管控目标 |
|---|---|
| 切换对会员版本的用户控制 | 控制预览版会员通道的用户权限切换 |
| 允许商业数据管道 | 是否开放企业商用诊断数据上报通道 |
| 允许进行桌面分析处理 | 桌面分析遥测数据采集开关 |
| 允许发送 Windows 诊断数据中的设备名称 | 上传诊断时是否附带本机设备名 |
| 允许诊断数据 | 全局诊断遥测总开关,控制基础日志上传 |
| 允许进行更新合规性处理 | 上报系统更新合规状态至微软服务器 |
| 允许 WUfB 云处理 | Windows 更新商业版云遥测数据 |
| 配置桌面分析的诊断数据上传终结点 | 自定义桌面分析数据上传服务器地址 |
| 配置诊断数据选择加入更改通知 | 用户修改遥测级别时弹窗通知 |
| 禁止删除诊断数据 | 阻止系统自动清理本地诊断日志缓存 |
| 禁用诊断数据查看器 | 关闭内置诊断日志查看工具 |
| 限制可选的桌面分析诊断数据 | 缩减桌面分析采集的数据范围 |
| 配置互连用户体验和遥测 | 全局遥测级别配置(基础 / 增强 / 完全) |
分类 2:企业商用标识与代理管控
| 策略名称 | 管控目标 |
|---|---|
| 配置商用 ID | 填入企业商用组织 ID,区分商用设备遥测数据 |
| 为 “已连接的用户体验和遥测” 服务经验证的代理使用配置 | 为遥测上传配置专用代理服务器 |
分类 3:OneSettings 云同步(系统设置云同步)
| 策略名称 | 管控目标 |
|---|---|
| 禁用 OneSettings 下载 | 阻止本机从云端同步系统设置 |
| 启用 OneSettings 审核 | 记录所有云设置同步操作日志 |
分类 4:日志、数据留存与反馈通知
| 策略名称 | 管控目标 |
|---|---|
| 限制诊断日志收集 | 限制本地诊断日志存储容量、采集范围 |
| 限制转储收集 | 限制系统蓝屏 / 崩溃转储文件上传、本地留存 |
| 不显示反馈通知 | 关闭系统推送的用户反馈弹窗、预览版调研通知 |
三、运维加固推荐配置(企业 / 内网服务器标准)
1. 遥测最小化隐私方案(推荐生产服务器)
允许诊断数据:已禁用,彻底关闭基础遥测上传配置互连用户体验和遥测:已禁用,关闭全量用户体验数据采集允许发送 Windows 诊断数据中的设备名称:已禁用,禁止上传设备标识允许进行桌面分析处理:已禁用,关闭桌面分析采集不显示反馈通知:已启用,屏蔽所有反馈弹窗
2. 企业合规(需上报桌面分析)折中方案
允许诊断数据:已启用 → 基础级别,仅上传最小必要日志配置商用ID:已启用,填入企业组织 ID 区分商用设备允许发送 Windows 诊断数据中的设备名称:已禁用,隐藏设备标识限制可选的桌面分析诊断数据:已启用,裁剪采集数据范围
四、PowerShell 批量配置对应注册表底层路径
HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection
# 禁用诊断遥测总开关
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name AllowTelemetry -Value 0 -Type DWord
# 禁用设备名称上传
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name AllowDeviceNameInDiagnosticData -Value 0 -Type DWord
五、关联系统底层逻辑(CBS/DISM 补充)
- 本组策略仅管控数据上报行为,不增减系统 CBS 组件;
- 若需彻底移除诊断 / 反馈应用,需通过
Get-WindowsOptionalFeature卸载配套可选功能; - 生效方式:组策略修改后执行
gpupdate /force强制刷新,无需重启。
六、风险提示
脚本解析、扩展完整加固脚本、验证与恢复方案
一、现有代码逐行解析
# 1. 自动创建注册表DataCollection策略项(不存在则新建,存在不报错)
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Force
# 2. 全局诊断遥测总开关:0=完全关闭遥测(无诊断数据上传)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name AllowTelemetry -Value 0 -Type DWord
# 3. 禁止诊断数据包携带本机设备名称,保护设备标识隐私
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name AllowDeviceNameInDiagnosticData -Value 0 -Type DWord
关键值说明 AllowTelemetry
0:关闭所有诊断遥测(服务器 / 内网隔离环境推荐)1:仅基础安全数据(最小日志)2:增强诊断(更新、硬件基础日志)3:完整全量遥测(预览版、反馈全部上传)
二、配套完整加固脚本(覆盖截图内全部隐私管控策略)
# 创建策略注册表路径
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"
New-Item -Path $regPath -Force | Out-Null
# 1. 核心遥测关闭
Set-ItemProperty -Path $regPath -Name AllowTelemetry -Value 0 -Type DWord
Set-ItemProperty -Path $regPath -Name AllowDeviceNameInDiagnosticData -Value 0 -Type DWord
# 2. 禁用桌面分析、商业数据管道
Set-ItemProperty -Path $regPath -Name AllowCommercialDataPipeline -Value 0 -Type DWord
Set-ItemProperty -Path $regPath -Name AllowDesktopAnalyticsProcessing -Value 0 -Type DWord
# 3. 关闭WUfB云处理、更新合规上报
Set-ItemProperty -Path $regPath -Name AllowWUfBCloudProcessing -Value 0 -Type DWord
Set-ItemProperty -Path $regPath -Name AllowUpdateComplianceProcessing -Value 0 -Type DWord
# 4. 禁用OneSettings云端设置同步
Set-ItemProperty -Path $regPath -Name DisableOneSettingsDownloads -Value 1 -Type DWord
# 5. 屏蔽系统反馈弹窗通知
Set-ItemProperty -Path $regPath -Name DoNotShowFeedbackNotifications -Value 1 -Type DWord
# 6. 限制诊断日志、崩溃转储收集
Set-ItemProperty -Path $regPath -Name LimitDiagnosticLogCollection -Value 1 -Type DWord
Set-ItemProperty -Path $regPath -Name LimitDumpCollection -Value 1 -Type DWord
# 7. 禁用诊断数据查看器、禁止删除本地诊断日志(防篡改日志)
Set-ItemProperty -Path $regPath -Name DisableDiagnosticDataViewer -Value 1 -Type DWord
Set-ItemProperty -Path $regPath -Name DisableDeletingDiagnosticData -Value 1 -Type DWord
Write-Host "✅ 全部诊断遥测隐私加固注册表项写入完成"
# 强制刷新组策略生效
gpupdate /force
三、验证脚本(检查当前所有遥测策略状态)
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"
if(Test-Path $regPath){
Get-ItemProperty -Path $regPath | Select *
}else{
Write-Warning "策略注册表路径不存在,遥测未配置"
}
# 管理员PowerShell执行,全量关闭诊断遥测、隐私上报
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"
# 创建注册表策略项,存在则跳过
New-Item -Path $regPath -Force | Out-Null
# 核心遥测总开关与设备标识隐藏
Set-ItemProperty -Path $regPath -Name AllowTelemetry -Value 0 -Type DWord
Set-ItemProperty -Path $regPath -Name AllowDeviceNameInDiagnosticData -Value 0 -Type DWord
# 企业商用/桌面分析云上报全部禁用
Set-ItemProperty -Path $regPath -Name AllowCommercialDataPipeline -Value 0 -Type DWord
Set-ItemProperty -Path $regPath -Name AllowDesktopAnalyticsProcessing -Value 0 -Type DWord
Set-ItemProperty -Path $regPath -Name AllowWUfBCloudProcessing -Value 0 -Type DWord
Set-ItemProperty -Path $regPath -Name AllowUpdateComplianceProcessing -Value 0 -Type DWord
# 云设置同步、反馈弹窗管控
Set-ItemProperty -Path $regPath -Name DisableOneSettingsDownloads -Value 1 -Type DWord
Set-ItemProperty -Path $regPath -Name DoNotShowFeedbackNotifications -Value 1 -Type DWord
# 本地日志、转储、诊断工具管控
Set-ItemProperty -Path $regPath -Name LimitDiagnosticLogCollection -Value 1 -Type DWord
Set-ItemProperty -Path $regPath -Name LimitDumpCollection -Value 1 -Type DWord
Set-ItemProperty -Path $regPath -Name DisableDiagnosticDataViewer -Value 1 -Type DWord
Set-ItemProperty -Path $regPath -Name DisableDeletingDiagnosticData -Value 1 -Type DWord
Write-Host "✅ 全部遥测隐私策略注册表写入完成"
# 强制刷新组策略
gpupdate /force | Out-Host
# 输出校验所有配置项
Write-Host "`n=== 当前DataCollection策略完整校验 ==="
Get-ItemProperty -Path $regPath | Select AllowTelemetry,AllowDeviceNameInDiagnosticData,AllowCommercialDataPipeline,AllowDesktopAnalyticsProcessing,AllowWUfBCloudProcessing,AllowUpdateComplianceProcessing,DisableOneSettingsDownloads,DoNotShowFeedbackNotifications,LimitDiagnosticLogCollection,LimitDumpCollection,DisableDiagnosticDataViewer,DisableDeletingDiagnosticData
@echo off
:: 切换对预览体验成员内部版本的用户控制
reg add "HKLM\SOFTWARE\Policies\Microsoft\WindowsPreviewBuilds" /v AllowBuildPreview /t REG_DWORD /d 1 /f
:: 允许商业数据管道
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" /v CommercialDataOptIn /t REG_DWORD /d 1 /f
:: 允许进行桌面分析处理
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.blueskyDev\Current\Default$windows.data.blueskyDev.cloud\windows.data.blueskyDev\Features" /v DesktopAnalyticsProcessingAllowed /t REG_DWORD /d 1 /f
:: 允许发送 Windows 诊断数据中的设备名称
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DeviceNameAllowed /t REG_DWORD /d 1 /f
:: 允许诊断数据
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v AllowTelemetry /t REG_DWORD /d 1 /f
:: 允许进行更新合规性处理
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v AllowUpdateCompliance /t REG_DWORD /d 1 /f
:: 允许 WUfB 云处理
reg add "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate" /v WUfBEnableCloudPolicy /t REG_DWORD /d 1 /f
:: 配置商用ID
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v CommercialId /t REG_SZ /d "YourCommercialIDHere" /f
:: 配置桌面分析的诊断数据上传终结点
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DesktopAnalyticsDataUploadEndpoint /t REG_SZ /d "https://youruploadendpoint.com" /f
:: 配置诊断数据选择加入更改通知
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DiagnosticDataChangeNotificationAllowed /t REG_DWORD /d 1 /f
:: 配置诊断数据选择加入设置用户界面
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DiagnosticDataViewerAllowed /t REG_DWORD /d 1 /f
:: 禁止删除诊断数据
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DisableDeleteDiagnosticData /t REG_DWORD /d 1 /f
:: 禁用诊断数据查看器
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DisableDiagnosticDataViewer /t REG_DWORD /d 1 /f
:: 为“已连接的用户体验和遥测”服务进行经验证的代理使用配置
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v ConnectedUserExperiencesAndTelemetryProxyAuthConfigured /t REG_DWORD /d 1 /f
:: 禁用 OneSettings 下载
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DisableOneSettingsDownload /t REG_DWORD /d 1 /f
:: 启用 OneSettings 审核
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v EnableOneSettingsAudit /t REG_DWORD /d 1 /f
:: 限制诊断日志收集(可以根据需要修改 REG_DWORD 的值)
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DiagnosticLogCollectionAllowed /t REG_DWORD /d 2 /f
:: 限制转储收集
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DumpCollectionAllowed /t REG_DWORD /d 2 /f
:: 限制可选的桌面分析诊断数据
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v OptionalDesktopAnalyticsDataCollectionAllowed /t REG_DWORD /d 2 /f
:: 配置互连用户体验和遥测
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v ConnectedUserExperiencesAndTelemetry /t REG_DWORD /d 1 /f
:: 不显示反馈通知
reg add "HKCU\Software\Microsoft\Siuf\Rules" /v NumberOfSIUFInPeriod /t REG_DWORD /d 0 /f
echo 用户控制设置已配置成功!
pause
@echo off
:: 切换对预览体验成员内部版本的用户控制
reg add "HKLM\SOFTWARE\Policies\Microsoft\WindowsPreviewBuilds" /v AllowBuildPreview /t REG_DWORD /d 1 /f
:: 允许商业数据管道
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" /v CommercialDataOptIn /t REG_DWORD /d 1 /f
:: 允许进行桌面分析处理
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.blueskyDev\Current\Default$windows.data.blueskyDev.cloud\windows.data.blueskyDev\Features" /v DesktopAnalyticsProcessingAllowed /t REG_DWORD /d 1 /f
:: 允许发送 Windows 诊断数据中的设备名称
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DeviceNameAllowed /t REG_DWORD /d 1 /f
:: 允许诊断数据
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v AllowTelemetry /t REG_DWORD /d 1 /f
:: 允许进行更新合规性处理
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v AllowUpdateCompliance /t REG_DWORD /d 1 /f
:: 允许 WUfB 云处理
reg add "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate" /v WUfBEnableCloudPolicy /t REG_DWORD /d 1 /f
:: 配置商用ID
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v CommercialId /t REG_SZ /d "YourCommercialIDHere" /f
:: 配置桌面分析的诊断数据上传终结点
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DesktopAnalyticsDataUploadEndpoint /t REG_SZ /d "https://youruploadendpoint.com" /f
:: 配置诊断数据选择加入更改通知
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DiagnosticDataChangeNotificationAllowed /t REG_DWORD /d 1 /f
:: 配置诊断数据选择加入设置用户界面
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DiagnosticDataViewerAllowed /t REG_DWORD /d 1 /f
:: 禁止删除诊断数据
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DisableDeleteDiagnosticData /t REG_DWORD /d 1 /f
:: 禁用诊断数据查看器
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DisableDiagnosticDataViewer /t REG_DWORD /d 1 /f
:: 为“已连接的用户体验和遥测”服务进行经验证的代理使用配置
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v ConnectedUserExperiencesAndTelemetryProxyAuthConfigured /t REG_DWORD /d 1 /f
:: 禁用 OneSettings 下载
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DisableOneSettingsDownload /t REG_DWORD /d 1 /f
:: 启用 OneSettings 审核
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v EnableOneSettingsAudit /t REG_DWORD /d 1 /f
:: 限制诊断日志收集(可以根据需要修改 REG_DWORD 的值)
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DiagnosticLogCollectionAllowed /t REG_DWORD /d 2 /f
:: 限制转储收集
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v DumpCollectionAllowed /t REG_DWORD /d 2 /f
:: 限制可选的桌面分析诊断数据
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v OptionalDesktopAnalyticsDataCollectionAllowed /t REG_DWORD /d 2 /f
:: 配置互连用户体验和遥测
reg add "HKLM\Software\Policies\Microsoft\Windows\DataCollection" /v ConnectedUserExperiencesAndTelemetry /t REG_DWORD /d 1 /f
:: 不显示反馈通知
reg add "HKCU\Software\Microsoft\Siuf\Rules" /v NumberOfSIUFInPeriod /t REG_DWORD /d 0 /f
echo 用户控制设置已配置成功!
pause

浙公网安备 33010602011771号