Connected User Experiences and Telemetry 服务是 Windows 操作系统中的一个系统服务,旨在收集有关用户设备使用情况、性能、错误报告等的数据,并将这些信息传输回微软。这些数据有助于微软改进操作系统和其他应用程序的性能、稳定性和安全性。
Connected User Experiences and Telemetry(DiagTrack)完整拆解解构
基础总览
svchost.exe -k utcsvc
diagtrack.dll
关键边界区分(重中之重)✅ DiagTrack 链路 = ETW 数据流 → diagnosticpolicy.dll 过滤 → vortex-win.data.microsoft.com✅ 这条链路唯一受「允许诊断数据 AllowTelemetry」组策略管控❌ 不包含 WER Watson 崩溃大包、CDPSvc、DoSvc、wlidsvc 上报;这些是独立通道,不受该策略约束。前身:Diagnostics Tracking Service(DPS 旧命名,现已更名),不要和 Diagnostic Policy Service(DPS/diagnosticpolicy.dll)混淆:
- DPS(诊断策略服务):承载
diagnosticpolicy.dll,策略裁决引擎 - DiagTrack:遥测采集、缓存、网络上报载体;二者强耦合但属于两个独立服务。
一、底层架构分层
【生产者层】
内核驱动、系统服务、应用程序、WMI、安装程序
调用 EventWrite / TraceLoggingWrite → 输出ETW事件
【ETW内核层】
Autologger-Diagtrack-Listener(开机早启动持久会话)
Diagtrack-Listener(DiagTrack服务启动后接管实时会话)
ETW环形缓冲区、事件分发
【消费层】svchost(utcsvc)+diagtrack.dll
├─ ETW事件回调接收
├─ 调用 diagnosticpolicy.dll 执行策略裁决
├─ 事件过滤、字段脱敏、GDID元数据注入
├─ 内存环形缓存 + 磁盘持久缓存
├─ 数据包聚合、加密封装
├─ WinHTTP网络上传模块
↓
微软云端:vortex-win.data.microsoft.com
二、核心运行四大机制
机制 1:双 ETW 采集会话机制
- Autologger-Diagtrack-Listener
开机早期加载,DiagTrack 尚未启动阶段持续捕获事件,写入 ETL 缓存文件;DiagTrack 启动后读取离线 ETL 回放处理。路径:
%ProgramData%\Microsoft\Diagnosis\ETLLogs\AutoLogger\ - Diagtrack-Listener
DiagTrack 服务就绪后创建实时会话,实时消费 ETW 事件。
可观测命令:
logman query -ets
机制 2:diagnosticpolicy.dll 策略裁决流水线(整条链路核心)
diagnosticpolicy.dll,一次性读取注册表策略生成内存规则表;每条 ETW 事件执行 3 步校验:- 读取
AllowTelemetry等级(0/1/2/3)- 0 = 安全(仅企业版可用,极少采集)
- 1 = 所需诊断数据(基线,故障元数据)
- 2 = 增强(逐步弃用)
- 3 = 完整(全量采集)
- Provider GUID、事件 ID 黑白名单匹配
- 敏感字段脱敏:路径、用户名、会话标识、可选移除 GDID
裁决分支:✅ 通过 → 进入缓存队列;❌ 拒绝 → 直接丢弃,不写入磁盘、不产生网络流量。
重要:策略修改不会热加载,必须重启 DiagTrack 服务生效。
机制 3:GDID 注入机制
机制 4:缓存与批量上传策略
- 内存环形缓存优先;达到阈值写入磁盘持久缓存:
%ProgramData%\Microsoft\Diagnosis\ - 异步批量上传,合并多条事件减少 HTTPS 连接;
- 断网缓存滞留,联网后重试上报;关机未发送数据持久保存,下次开机继续上传;
- 支持系统代理、带宽节流策略。
三、依赖文件清单
核心二进制
diagtrack.dll:遥测服务主体diagtrack.exe:独立遥测客户端diagnosticpolicy.dll:策略过滤引擎(DPS 服务承载)flightsettings.dll:预览体验策略辅助windowscoredeviceinfo.dll:硬件信息采集winhttp.dll:HTTPS 上传网络栈advapi32.dll:ETW 用户态 API
注册表配置
# 遥测总策略(管控diagnosticpolicy.dll过滤规则)
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
AllowTelemetry = REG_DWORD
# DiagTrack服务自身配置
HKLM\SYSTEM\CurrentControlSet\Services\DiagTrack
# 缓存与运行时配置
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack
日志路径
- 事件日志:
Microsoft-Windows-DiagTrack/Operational - ETW 跟踪日志:
%ProgramData%\Microsoft\Diagnosis\ETLLogs\
四、依赖关系梳理
硬性强制依赖(缺一不可)
- RpcSs(RPC Endpoint Mapper)
进程间 COM/ALPC 通信基础;无 RPC 服务 DiagTrack 启动失败。
- DPS(Diagnostic Policy Service)
提供
diagnosticpolicy.dll策略引擎;DPS 停止 → DiagTrack 无法完成事件过滤。 - ETW 内核子系统
所有原始事件来源;内核 Trace 会话依赖系统 ETW 驱动。
- TCP/IP 网络栈(仅上传阶段)
可选依赖
- CDPSvc:用于读取 GDID;CDPSvc 禁用依然可运行,只是无法附加 GDID 标识。
- WER:无强制依赖。WER 崩溃大包走独立 Watson 通道;仅会同步推送精简 BucketID 进入 DiagTrack 遥测流。
- Task Scheduler:配套任务 CompatTelRunner 定时采集兼容性数据送入 DiagTrack 缓存。
完全不依赖(边界重点,用于方案文档)
- 不管控 WER(watson.microsoft.com)上传链路;崩溃 dump 上传不受 AllowTelemetry 约束;
- 不控制 wlidsvc 申请 GDID、login.live.com设备注册;
- 不控制 DoSvc 传递优化、CDPSvc 跨设备协同上报;
- 和 GDI 图形子系统、BCD 启动组件无直接耦合。
五、完整标准业务链路
链路 A:系统异常事件完整流转(ETW→DiagTrack 云端上报)
系统服务/驱动异常 → EventWrite输出ETW事件
→ Autologger/Diagtrack-Listener ETW会话捕获事件
→ diagtrack.dll接收事件,转发至diagnosticpolicy.dll
→ 策略引擎执行AllowTelemetry等级校验、黑白名单、脱敏
分支1【裁决放行】
→ diagtrack.dll读取GDID附加至数据包元数据
→ 写入本地缓存队列
→ 后台聚合封装加密HTTPS载荷
→ 上传 vortex-win.data.microsoft.com
分支2【裁决拦截】
→ 事件直接释放,无磁盘写入、无网络请求
链路 B:组策略变更生效链路
gpupdate /force 写入AllowTelemetry注册表键
→ DPS/diagnosticpolicy.dll不会自动刷新内存规则
→ 重启DiagTrack服务 → 重新加载策略规则表
→ 后续所有ETW事件使用新过滤标准
链路 C:应用崩溃两条并行数据流(极易混淆)
应用触发未处理异常
1)WER独立链路(不受AllowTelemetry管控)
WerFault采集dump → 存入WER缓存 → 可选上传 watson.microsoft.com
2)DiagTrack遥测链路(受AllowTelemetry管控)
WER输出ETW故障事件(仅BucketID精简元数据,不含dump)
→ ETW→diagnosticpolicy.dll过滤 → 可携带GDID上传vortex
核心结论:同一个崩溃,两条独立通道,两套管控策略、两套云端目标域名。
六、配套上下游组件清单(整条遥测生态链)
上游(数据生产者)
- CompatTelRunner.exe(兼容性评估定时任务)
- DeviceCensus.exe(硬件普查采集)
- WER(Windows 错误报告)
- Windows Update、驱动框架、内核进程管理器
- OOBE 开箱体验 CEH 进程
下游(消费 / 关联组件)
- CDPSvc / CDPUserSvc:提供 GDID 读取接口
- wlidsvc:GDID 云端注册源头
- DiagTrack 配套任务计划:
\Microsoft\Windows\Application Experience\ - 反馈中心(FeedbackHub):手动反馈包复用遥测管道
对应云端上传域名(DiagTrack 专属)
vortex-win.data.microsoft.com
v10.events.data.microsoft.com
v10c.events.data.microsoft.com
七、运维加固与配套组策略
1)核心组策略路径
- 允许诊断数据:已启用 → 1(所需诊断数据)
- 关闭客户体验改善计划:已启用
- 关闭应用程序兼容性调查程序:已启用
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
AllowTelemetry = DWORD 1
2)服务管控方案
直接禁用 DiagTrack 风险:部分系统诊断、更新健康检查功能异常。
vortex-win.data.microsoft.com3)防火墙域名阻断清单(针对 DiagTrack 链路)
vortex-win.data.microsoft.com
v10.events.data.microsoft.com
v10c.events.data.microsoft.com
⚠️ 仅阻断这条链路,无法阻断 WER、CDPSvc、DoSvc、login.live.com其他 GDID 上报通道。
八、高频认知误区澄清
误区 1
设置 AllowTelemetry=1,就能阻止崩溃 dump 上传❌ 错误。AllowTelemetry 只管控 DiagTrack(vortex)ETW 遥测流;完整 dump 通过 WER 独立 Watson 通道,必须单独配置 WER 策略。
误区 2
禁用 DiagTrack = 关闭所有系统遥测❌仅切断 ETW 主线遥测;CDPSvc、DoSvc、WER、wlidsvc、Microsoft Store 仍存在独立上报通道。
误区 3
修改 AllowTelemetry 策略立刻生效❌diagnosticpolicy.dll 内存规则不会自动重载,必须重启 DiagTrack 服务。
误区 4
DiagTrack 自己生成系统崩溃日志❌DiagTrack 只是事件消费者;崩溃捕获由 WerSvc/WerFault 完成。
九、链路横向对照(整合你之前全部研究内容)
| 链路名称 | 承载服务 | 策略控制点 | 目标域名 | 是否携带 GDID |
|---|---|---|---|---|
| ETW→DiagTrack 主线遥测 | DiagTrack+diagnosticpolicy.dll | AllowTelemetry 组策略 | vortex-win.data.microsoft.com | 策略可控 |
| WER 崩溃报告 | WerSvc/WerFault | WER 独立策略 | watson.microsoft.com | 独立开关控制 |
| GDID 注册通道 | wlidsvc | 无对应遥测策略 | login.live.com | 生成 GDID 源头 |
| 跨设备协同上报 | CDPSvc | 连接设备平台策略 | settings-win.data.microsoft.com | 固定携带 |
| 传递优化上报 | DoSvc | 传递优化策略 | *.delivery.mp.microsoft.com | 固定携带 |
Connected User Experiences and Telemetry 服务是 Windows 操作系统中的一个系统服务,旨在收集有关用户设备使用情况、性能、错误报告等的数据,并将这些信息传输回微软。这些数据有助于微软改进操作系统和其他应用程序的性能、稳定性和安全性。
具体功能
-
用户体验数据收集:
- 该服务会收集用户在使用设备时的行为数据、系统性能、应用程序的崩溃或错误报告等信息。微软利用这些数据来了解用户的使用习惯、设备配置、遇到的问题以及操作系统的表现如何。
-
遥测数据:
- 遥测数据(Telemetry)是指通过远程传输的技术信息,这些数据通常用于监控和分析设备的状态。例如,操作系统的启动时间、硬件资源使用情况(如 CPU、内存、磁盘使用率等)、安装的驱动程序是否有冲突或导致崩溃、设备是否遇到蓝屏死机等情况。
-
故障报告:
- 当系统或应用程序崩溃时,Connected User Experiences and Telemetry 服务可以自动收集错误信息,并向微软报告,以便开发团队进行问题分析和修复。
-
Windows 更新与改进:
- 服务还帮助微软收集有关 Windows 更新过程的数据,包括安装进度、安装失败的原因等,这有助于改进未来的更新机制。
数据收集内容
- 硬件信息:如设备型号、处理器、内存、硬盘类型等硬件配置。
- 操作系统信息:包括操作系统版本、补丁更新状态、系统性能等。
- 应用程序性能:哪些应用程序正在运行,运行状态如何,是否发生崩溃等。
- 用户行为:用户与操作系统和应用的交互数据,如常用功能、应用打开频率等。
- 系统错误和崩溃报告:当系统或程序出现问题时,自动记录并传送相关信息。
如何控制或禁用
Windows 10 和 Windows 11 提供了一些选项,让用户可以控制或禁用 Connected User Experiences and Telemetry 服务:
-
隐私设置:
- 在 设置 > 隐私 > 反馈与诊断 中,用户可以选择数据收集的级别,通常有三个选项:
- 基本:仅收集设备所需的最低数据。
- 全面:收集更多的设备数据和应用程序使用信息,有助于微软改进产品。
- 关闭:完全禁用遥测数据的收集(在某些版本的 Windows 中,关闭此选项可能会限制某些功能或更新的接收)。
- 在 设置 > 隐私 > 反馈与诊断 中,用户可以选择数据收集的级别,通常有三个选项:
-
组策略:
- 企业用户可以通过 组策略编辑器 来配置遥测和反馈设置,进一步细化数据的收集和传输方式。
-
注册表设置:
- 高级用户还可以通过修改注册表来控制此服务的行为,虽然这不是推荐的常规操作,但对于企业或技术人员来说,注册表提供了更详细的配置选项。
作用和好处
-
改进操作系统和应用程序:
- 收集的数据帮助微软了解用户遇到的问题,进而改进 Windows 的稳定性、兼容性和性能。例如,微软可以根据遥测数据及时发布补丁,修复常见的系统或应用崩溃问题。
-
增强安全性:
- 通过收集安全相关的数据(如恶意软件活动、网络攻击等),微软能够更迅速地发现潜在的安全威胁,并推送修复补丁。
-
提供个性化服务:
- 微软可能使用这些数据为用户提供更加个性化的服务,如优化更新体验、建议安装的应用程序等。
用户隐私和安全
虽然 Connected User Experiences and Telemetry 服务提供了显著的帮助,但它也可能引发用户对隐私的担忧。微软声明,所有收集的数据都会进行匿名处理,并遵循隐私政策。然而,某些用户可能更倾向于减少或完全禁用此服务,以确保更多的隐私保护。
Connected User Experiences and Telemetry 服务是 Windows 操作系统中的一项功能,旨在收集用户的设备使用数据、性能、错误报告等信息,并将这些数据传送给微软,以帮助其改善操作系统和应用程序。虽然它能够提升系统的稳定性和安全性,但用户也可以根据需求控制其数据收集的程度。
在 PowerShell 中禁用 Connected User Experiences and Telemetry 服务,你可以通过修改注册表项或服务设置来实现。以下是通过 PowerShell 禁用该服务的步骤:
方法 1:使用 PowerShell 修改注册表
Connected User Experiences and Telemetry 服务的设置存储在 Windows 注册表中。可以通过 PowerShell 直接编辑注册表来禁用该服务。
-
打开 PowerShell(以管理员身份运行)
- 在 Windows 搜索框中输入
PowerShell,右键点击 Windows PowerShell,选择 以管理员身份运行。
- 在 Windows 搜索框中输入
-
执行以下命令禁用遥测服务:
执行以下命令将遥测级别设置为“禁用”:
powershellCopy Code# 禁用遥测服务 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Value 0解释:
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection是存储遥测设置的注册表路径。AllowTelemetry设置决定遥测级别。其值范围如下:0:禁用遥测1:基本数据收集2:增强数据收集3:全面数据收集
-
重启计算机
- 修改注册表后,通常需要重启计算机才能生效。
方法 2:使用 PowerShell 停止并禁用服务
你也可以通过 PowerShell 停止与禁用 Connected User Experiences and Telemetry 服务(DiagTrack 服务)。
-
打开 PowerShell(以管理员身份运行)
-
停止服务:
执行以下命令来停止服务:
powershellCopy CodeStop-Service -Name DiagTrack -
禁用服务:
禁用该服务,防止它在系统启动时重新启动:
powershellCopy CodeSet-Service -Name DiagTrack -StartupType Disabled -
确认服务状态:
执行以下命令查看服务的当前状态:
powershellCopy CodeGet-Service -Name DiagTrack
方法 3:通过 PowerShell 修改组策略(适用于 Windows 10/11 Pro 和 Enterprise)
如果你的操作系统版本支持组策略,你可以通过 PowerShell 修改组策略来禁用遥测服务。
-
打开组策略编辑器(通过 PowerShell)
执行以下命令来启用远程组策略编辑:
powershellCopy Codegpedit.msc -
禁用遥测:
- 在组策略编辑器中,依次导航到
计算机配置>管理模板>Windows 组件>数据收集和预览构建。 - 找到 允许遥测 设置,双击它,然后选择 禁用。
- 在组策略编辑器中,依次导航到
注意事项
- 修改注册表时,请小心操作,确保按照正确的路径和参数设置。如果不确定,请先备份注册表。
- 禁用遥测服务可能会导致某些功能无法正常工作,特别是与更新和反馈相关的功能。
- 对于 Windows Home 版本,可能无法通过组策略来禁用遥测,但注册表方法可以使用。
禁用 Connected User Experiences and Telemetry 服务可以帮助提高隐私保护,但要注意,这可能会影响某些功能或系统更新的体验。
在批处理脚本 (.bat) 中禁用 Connected User Experiences and Telemetry 服务,你可以通过以下方法:
方法 1:禁用服务(通过修改注册表)
使用批处理文件禁用遥测服务,首先通过修改注册表设置来实现:
1. 打开文本编辑器(如记事本),并创建一个新的 .bat 文件。
2. 将以下内容复制并粘贴到 .bat 文件中:
@echo off
REM 禁用 Connected User Experiences and Telemetry 服务(遥测服务)
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" /v "AllowTelemetry" /t REG_DWORD /d 0 /f
REM 停止并禁用 DiagTrack 服务
sc stop DiagTrack
sc config DiagTrack start= disabled
echo 禁用遥测服务已完成。
pause
3. 保存文件并运行:
- 将文件保存为
.bat文件(例如DisableTelemetry.bat)。 - 右键点击
.bat文件,并选择 以管理员身份运行。
说明:
-
修改注册表:
REG ADD命令将AllowTelemetry的值设置为0,即禁用遥测功能。 -
停止和禁用服务:
使用sc stop DiagTrack停止 DiagTrack 服务(这是 Connected User Experiences and Telemetry 服务的实际名称)。 使用sc config DiagTrack start= disabled禁用该服务,使它不会在启动时自动启动。 -
执行后,脚本会提示你禁用遥测服务的操作已完成,并等待你按任意键关闭窗口。
方法 2:仅停止并禁用服务
如果你只想禁用 DiagTrack 服务,而不修改注册表中的遥测设置,可以使用以下内容:
@echo off
REM 停止并禁用 Connected User Experiences and Telemetry 服务
sc stop DiagTrack
sc config DiagTrack start= disabled
echo 禁用遥测服务已完成。
pause
此方法只会停止并禁用服务,而不会修改遥测设置的注册表值。如果你不需要修改遥测级别,可以选择此方法。
注意事项:
- 管理员权限: 为了修改服务配置和注册表,你需要以管理员身份运行
.bat文件。 - 可能影响系统功能: 禁用遥测服务可能会影响某些功能,特别是自动更新和反馈功能。
- 需要重启系统: 一些设置可能在重启后才完全生效。
运行这些脚本可以帮助你禁用 Connected User Experiences and Telemetry 服务,并加强系统隐私保护。
关于 Connected User Experiences and Telemetry 服务(简称 CEIP 或 DiagTrack)的注册表设置,通常与 Windows 系统的用户数据收集和诊断功能相关。它收集与设备性能、应用程序行为和故障等有关的数据。这些设置可以通过修改注册表来启用或禁用。
以下是禁用 Connected User Experiences and Telemetry 服务 的注册表编辑方法:
注册表禁用 CEIP 服务 .reg 文件:
- 打开记事本,复制以下内容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"DoNotTrack"=dword:00000001
- 保存文件并命名为 Disable_CEIP.reg(确保扩展名是 .reg)。
- 双击该 .reg 文件以导入到注册表。
- 重新启动计算机。
此注册表项将禁用 Connected User Experiences and Telemetry 服务,防止系统收集和发送用户数据。
禁用 遥测服务(Telemetry Service),你可以通过修改注册表来完成。以下是可以禁用遥测服务的 .reg 文件 内容:
禁用遥测服务 .reg 文件内容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"AllowTelemetry"=dword:00000000
Windows Registry Editor Version 5.00
; 禁用 Windows 遥测
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"AllowTelemetry"=dword:00000000
"MaxTelemetryAllowed"=dword:00000000
"UploadHealthData"=dword:00000000
"AllowTelemetryFromNonAdminUsers"=dword:00000000
"DoNotTrackNetworkUsage"=dword:00000001
; 禁用 Windows 诊断服务
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DiagTrack]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dmwappushservice]
"Start"=dword:00000004
解释:
- AllowTelemetry=0 → 完全禁用遥测。
- DiagTrack / dmwappushservice → 负责收集诊断数据,设置为
4表示禁用。 - DoNotTrackNetworkUsage=1 → 不跟踪网络使用情况。
禁用相关服务(可通过“服务”界面或命令)
sc stop "DiagTrack"
sc config "DiagTrack" start= disabled
sc stop "dmwappushservice"
sc config "dmwappushservice" start= disabled
sc stop→ 停止服务sc config start= disabled→ 设置开机不启动
3️⃣ 可选:通过组策略进一步限制
如果你使用 Windows 10/11 Pro 或 Enterprise,可以打开组策略(gpedit.msc):
- 路径:
计算机配置 → 管理模板 → Windows 组件 → 数据收集和预览构建 - 设置:
- 允许遥测 → 设置为 已禁用
- 不要发送 Windows 诊断数据 → 启用

浙公网安备 33010602011771号