Connected User Experiences and Telemetry 服务是 Windows 操作系统中的一个系统服务,旨在收集有关用户设备使用情况、性能、错误报告等的数据,并将这些信息传输回微软。这些数据有助于微软改进操作系统和其他应用程序的性能、稳定性和安全性。

Connected User Experiences and Telemetry(DiagTrack)完整拆解解构

基础总览

服务名称:DiagTrack
 
显示名称:Connected User Experiences and Telemetry(连接用户体验和遥测)
 
宿主:svchost.exe -k utcsvc
 
核心模块:diagtrack.dll
 
定位:Windows 主遥测采集与上报管道,承载 ETW 事件消费、策略过滤、数据缓存、批量 HTTPS 上传;
关键边界区分(重中之重)
 
✅ 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:遥测采集、缓存、网络上报载体;二者强耦合但属于两个独立服务。

一、底层架构分层

plaintext
【生产者层】
内核驱动、系统服务、应用程序、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 采集会话机制

  1. Autologger-Diagtrack-Listener
     
    开机早期加载,DiagTrack 尚未启动阶段持续捕获事件,写入 ETL 缓存文件;DiagTrack 启动后读取离线 ETL 回放处理。
     
    路径:%ProgramData%\Microsoft\Diagnosis\ETLLogs\AutoLogger\
  2. Diagtrack-Listener
     
    DiagTrack 服务就绪后创建实时会话,实时消费 ETW 事件。
可观测命令:
cmd
logman query -ets

机制 2:diagnosticpolicy.dll 策略裁决流水线(整条链路核心)

DiagTrack 启动时加载diagnosticpolicy.dll,一次性读取注册表策略生成内存规则表;每条 ETW 事件执行 3 步校验:
  1. 读取 AllowTelemetry 等级(0/1/2/3)
    • 0 = 安全(仅企业版可用,极少采集)
    • 1 = 所需诊断数据(基线,故障元数据)
    • 2 = 增强(逐步弃用)
    • 3 = 完整(全量采集)
  2. Provider GUID、事件 ID 黑白名单匹配
  3. 敏感字段脱敏:路径、用户名、会话标识、可选移除 GDID
     
    裁决分支:
     
    ✅ 通过 → 进入缓存队列;
     
    ❌ 拒绝 → 直接丢弃,不写入磁盘、不产生网络流量。
重要:策略修改不会热加载,必须重启 DiagTrack 服务生效。

机制 3:GDID 注入机制

diagtrack.dll 初始化阶段调用 CDP 内部接口读取注册表 GDID(Global Device Identifier);
 
策略允许时,自动将 GDID 作为元数据附加至每一条上传遥测数据包;
 
AllowTelemetry=1 模式下,策略引擎可控制是否剥离 GDID 字段。

机制 4:缓存与批量上传策略

  1. 内存环形缓存优先;达到阈值写入磁盘持久缓存:
     
    %ProgramData%\Microsoft\Diagnosis\
  2. 异步批量上传,合并多条事件减少 HTTPS 连接;
  3. 断网缓存滞留,联网后重试上报;关机未发送数据持久保存,下次开机继续上传;
  4. 支持系统代理、带宽节流策略。

三、依赖文件清单

核心二进制

  1. diagtrack.dll:遥测服务主体
  2. diagtrack.exe:独立遥测客户端
  3. diagnosticpolicy.dll:策略过滤引擎(DPS 服务承载)
  4. flightsettings.dll:预览体验策略辅助
  5. windowscoredeviceinfo.dll:硬件信息采集
  6. winhttp.dll:HTTPS 上传网络栈
  7. advapi32.dll:ETW 用户态 API

注册表配置

reg
# 遥测总策略(管控diagnosticpolicy.dll过滤规则)
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
AllowTelemetry = REG_DWORD

# DiagTrack服务自身配置
HKLM\SYSTEM\CurrentControlSet\Services\DiagTrack

# 缓存与运行时配置
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack

日志路径

  1. 事件日志:Microsoft-Windows-DiagTrack/Operational
  2. ETW 跟踪日志:%ProgramData%\Microsoft\Diagnosis\ETLLogs\

四、依赖关系梳理

硬性强制依赖(缺一不可)

  1. RpcSs(RPC Endpoint Mapper)
     
    进程间 COM/ALPC 通信基础;无 RPC 服务 DiagTrack 启动失败。
  2. DPS(Diagnostic Policy Service)
     
    提供diagnosticpolicy.dll策略引擎;DPS 停止 → DiagTrack 无法完成事件过滤。
  3. ETW 内核子系统
     
    所有原始事件来源;内核 Trace 会话依赖系统 ETW 驱动。
  4. TCP/IP 网络栈(仅上传阶段)

可选依赖

  1. CDPSvc:用于读取 GDID;CDPSvc 禁用依然可运行,只是无法附加 GDID 标识。
  2. WER:无强制依赖。WER 崩溃大包走独立 Watson 通道;仅会同步推送精简 BucketID 进入 DiagTrack 遥测流。
  3. Task Scheduler:配套任务 CompatTelRunner 定时采集兼容性数据送入 DiagTrack 缓存。

完全不依赖(边界重点,用于方案文档)

  1. 不管控 WER(watson.microsoft.com)上传链路;崩溃 dump 上传不受 AllowTelemetry 约束;
  2. 不控制 wlidsvc 申请 GDID、login.live.com设备注册;
  3. 不控制 DoSvc 传递优化、CDPSvc 跨设备协同上报;
  4. 和 GDI 图形子系统、BCD 启动组件无直接耦合。

五、完整标准业务链路

链路 A:系统异常事件完整流转(ETW→DiagTrack 云端上报)

plaintext
系统服务/驱动异常 → EventWrite输出ETW事件
→ Autologger/Diagtrack-Listener ETW会话捕获事件
→ diagtrack.dll接收事件,转发至diagnosticpolicy.dll
→ 策略引擎执行AllowTelemetry等级校验、黑白名单、脱敏
分支1【裁决放行】
→ diagtrack.dll读取GDID附加至数据包元数据
→ 写入本地缓存队列
→ 后台聚合封装加密HTTPS载荷
→ 上传 vortex-win.data.microsoft.com
分支2【裁决拦截】
→ 事件直接释放,无磁盘写入、无网络请求

链路 B:组策略变更生效链路

plaintext
gpupdate /force 写入AllowTelemetry注册表键
→ DPS/diagnosticpolicy.dll不会自动刷新内存规则
→ 重启DiagTrack服务 → 重新加载策略规则表
→ 后续所有ETW事件使用新过滤标准

链路 C:应用崩溃两条并行数据流(极易混淆)

plaintext
应用触发未处理异常
1)WER独立链路(不受AllowTelemetry管控)
WerFault采集dump → 存入WER缓存 → 可选上传 watson.microsoft.com

2)DiagTrack遥测链路(受AllowTelemetry管控)
WER输出ETW故障事件(仅BucketID精简元数据,不含dump)
→ ETW→diagnosticpolicy.dll过滤 → 可携带GDID上传vortex
核心结论:同一个崩溃,两条独立通道,两套管控策略、两套云端目标域名。

六、配套上下游组件清单(整条遥测生态链)

上游(数据生产者)

  1. CompatTelRunner.exe(兼容性评估定时任务)
  2. DeviceCensus.exe(硬件普查采集)
  3. WER(Windows 错误报告)
  4. Windows Update、驱动框架、内核进程管理器
  5. OOBE 开箱体验 CEH 进程

下游(消费 / 关联组件)

  1. CDPSvc / CDPUserSvc:提供 GDID 读取接口
  2. wlidsvc:GDID 云端注册源头
  3. DiagTrack 配套任务计划:\Microsoft\Windows\Application Experience\
  4. 反馈中心(FeedbackHub):手动反馈包复用遥测管道

对应云端上传域名(DiagTrack 专属)

plaintext
vortex-win.data.microsoft.com
v10.events.data.microsoft.com
v10c.events.data.microsoft.com

七、运维加固与配套组策略

1)核心组策略路径

计算机配置 → 管理模板 → Windows 组件 → 数据收集和预览版本
  1. 允许诊断数据:已启用 → 1(所需诊断数据)
  2. 关闭客户体验改善计划:已启用
  3. 关闭应用程序兼容性调查程序:已启用
注册表键:
plaintext
HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection
AllowTelemetry = DWORD 1

2)服务管控方案

方案 A【平衡模式,推荐政企终端】
 
DiagTrack:手动(不禁止),依靠策略过滤流量,不直接禁用;
直接禁用 DiagTrack 风险:部分系统诊断、更新健康检查功能异常。
方案 B【严格隔离模式】
 
DiagTrack 启动类型 = 禁用;同时防火墙阻断 vortex-win.data.microsoft.com

3)防火墙域名阻断清单(针对 DiagTrack 链路)

plaintext
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 固定携带
如果你需要,我可以把:GDID + DiagTrack 遥测链路 + WER Watson 全部数据流合并绘制一份完整端到端流程图文本版

Connected User Experiences and Telemetry 服务是 Windows 操作系统中的一个系统服务,旨在收集有关用户设备使用情况、性能、错误报告等的数据,并将这些信息传输回微软。这些数据有助于微软改进操作系统和其他应用程序的性能、稳定性和安全性。

具体功能

  1. 用户体验数据收集:

    • 该服务会收集用户在使用设备时的行为数据、系统性能、应用程序的崩溃或错误报告等信息。微软利用这些数据来了解用户的使用习惯、设备配置、遇到的问题以及操作系统的表现如何。
  2. 遥测数据:

    • 遥测数据(Telemetry)是指通过远程传输的技术信息,这些数据通常用于监控和分析设备的状态。例如,操作系统的启动时间、硬件资源使用情况(如 CPU、内存、磁盘使用率等)、安装的驱动程序是否有冲突或导致崩溃、设备是否遇到蓝屏死机等情况。
  3. 故障报告:

    • 当系统或应用程序崩溃时,Connected User Experiences and Telemetry 服务可以自动收集错误信息,并向微软报告,以便开发团队进行问题分析和修复。
  4. Windows 更新与改进:

    • 服务还帮助微软收集有关 Windows 更新过程的数据,包括安装进度、安装失败的原因等,这有助于改进未来的更新机制。

数据收集内容

  • 硬件信息:如设备型号、处理器、内存、硬盘类型等硬件配置。
  • 操作系统信息:包括操作系统版本、补丁更新状态、系统性能等。
  • 应用程序性能:哪些应用程序正在运行,运行状态如何,是否发生崩溃等。
  • 用户行为:用户与操作系统和应用的交互数据,如常用功能、应用打开频率等。
  • 系统错误和崩溃报告:当系统或程序出现问题时,自动记录并传送相关信息。

如何控制或禁用

Windows 10 和 Windows 11 提供了一些选项,让用户可以控制或禁用 Connected User Experiences and Telemetry 服务:

  1. 隐私设置:

    • 在 设置 > 隐私 > 反馈与诊断 中,用户可以选择数据收集的级别,通常有三个选项:
      • 基本:仅收集设备所需的最低数据。
      • 全面:收集更多的设备数据和应用程序使用信息,有助于微软改进产品。
      • 关闭:完全禁用遥测数据的收集(在某些版本的 Windows 中,关闭此选项可能会限制某些功能或更新的接收)。
  2. 组策略:

    • 企业用户可以通过 组策略编辑器 来配置遥测和反馈设置,进一步细化数据的收集和传输方式。
  3. 注册表设置:

    • 高级用户还可以通过修改注册表来控制此服务的行为,虽然这不是推荐的常规操作,但对于企业或技术人员来说,注册表提供了更详细的配置选项。

作用和好处

  1. 改进操作系统和应用程序:

    • 收集的数据帮助微软了解用户遇到的问题,进而改进 Windows 的稳定性、兼容性和性能。例如,微软可以根据遥测数据及时发布补丁,修复常见的系统或应用崩溃问题。
  2. 增强安全性:

    • 通过收集安全相关的数据(如恶意软件活动、网络攻击等),微软能够更迅速地发现潜在的安全威胁,并推送修复补丁。
  3. 提供个性化服务:

    • 微软可能使用这些数据为用户提供更加个性化的服务,如优化更新体验、建议安装的应用程序等。

用户隐私和安全

虽然 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 直接编辑注册表来禁用该服务。

  1. 打开 PowerShell(以管理员身份运行)

    • 在 Windows 搜索框中输入 PowerShell,右键点击 Windows PowerShell,选择 以管理员身份运行。
  2. 执行以下命令禁用遥测服务:

    执行以下命令将遥测级别设置为“禁用”:

    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:全面数据收集
  3. 重启计算机

    • 修改注册表后,通常需要重启计算机才能生效。

方法 2:使用 PowerShell 停止并禁用服务

你也可以通过 PowerShell 停止与禁用 Connected User Experiences and Telemetry 服务(DiagTrack 服务)。

  1. 打开 PowerShell(以管理员身份运行)

  2. 停止服务:

    执行以下命令来停止服务:

    powershellCopy Code
    Stop-Service -Name DiagTrack
  3. 禁用服务:

    禁用该服务,防止它在系统启动时重新启动:

    powershellCopy Code
    Set-Service -Name DiagTrack -StartupType Disabled
  4. 确认服务状态:

    执行以下命令查看服务的当前状态:

    powershellCopy Code
    Get-Service -Name DiagTrack

方法 3:通过 PowerShell 修改组策略(适用于 Windows 10/11 Pro 和 Enterprise)

如果你的操作系统版本支持组策略,你可以通过 PowerShell 修改组策略来禁用遥测服务。

  1. 打开组策略编辑器(通过 PowerShell)

    执行以下命令来启用远程组策略编辑:

    powershellCopy Code
    gpedit.msc
  2. 禁用遥测:

    • 在组策略编辑器中,依次导航到 计算机配置 > 管理模板 > Windows 组件 > 数据收集和预览构建。
    • 找到 允许遥测 设置,双击它,然后选择 禁用。

注意事项

  1. 修改注册表时,请小心操作,确保按照正确的路径和参数设置。如果不确定,请先备份注册表。
  2. 禁用遥测服务可能会导致某些功能无法正常工作,特别是与更新和反馈相关的功能。
  3. 对于 Windows Home 版本,可能无法通过组策略来禁用遥测,但注册表方法可以使用。

禁用 Connected User Experiences and Telemetry 服务可以帮助提高隐私保护,但要注意,这可能会影响某些功能或系统更新的体验。


在批处理脚本 (.bat) 中禁用 Connected User Experiences and Telemetry 服务,你可以通过以下方法:

方法 1:禁用服务(通过修改注册表)

使用批处理文件禁用遥测服务,首先通过修改注册表设置来实现:

1. 打开文本编辑器(如记事本),并创建一个新的 .bat 文件。

2. 将以下内容复制并粘贴到 .bat 文件中:

Copy Code
@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 文件,并选择 以管理员身份运行。

说明:

  1. 修改注册表:
    REG ADD 命令将 AllowTelemetry 的值设置为 0,即禁用遥测功能。

  2. 停止和禁用服务:
    使用 sc stop DiagTrack 停止 DiagTrack 服务(这是 Connected User Experiences and Telemetry 服务的实际名称)。 使用 sc config DiagTrack start= disabled 禁用该服务,使它不会在启动时自动启动。

  3. 执行后,脚本会提示你禁用遥测服务的操作已完成,并等待你按任意键关闭窗口。

方法 2:仅停止并禁用服务

如果你只想禁用 DiagTrack 服务,而不修改注册表中的遥测设置,可以使用以下内容:

Copy Code
@echo off
REM 停止并禁用 Connected User Experiences and Telemetry 服务
sc stop DiagTrack
sc config DiagTrack start= disabled

echo 禁用遥测服务已完成。
pause

此方法只会停止并禁用服务,而不会修改遥测设置的注册表值。如果你不需要修改遥测级别,可以选择此方法。

注意事项:

  1. 管理员权限: 为了修改服务配置和注册表,你需要以管理员身份运行 .bat 文件。
  2. 可能影响系统功能: 禁用遥测服务可能会影响某些功能,特别是自动更新和反馈功能。
  3. 需要重启系统: 一些设置可能在重启后才完全生效。

运行这些脚本可以帮助你禁用 Connected User Experiences and Telemetry 服务,并加强系统隐私保护。


关于 Connected User Experiences and Telemetry 服务(简称 CEIP 或 DiagTrack)的注册表设置,通常与 Windows 系统的用户数据收集和诊断功能相关。它收集与设备性能、应用程序行为和故障等有关的数据。这些设置可以通过修改注册表来启用或禁用。

以下是禁用 Connected User Experiences and Telemetry 服务 的注册表编辑方法:

注册表禁用 CEIP 服务 .reg 文件:

  1. 打开记事本,复制以下内容:
 
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"DoNotTrack"=dword:00000001
  1. 保存文件并命名为 Disable_CEIP.reg(确保扩展名是 .reg)。
  2. 双击该 .reg 文件以导入到注册表。
  3. 重新启动计算机。

此注册表项将禁用 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 → 不跟踪网络使用情况。

禁用相关服务(可通过“服务”界面或命令)

cmd
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 诊断数据 → 启用

 

posted @ 2024-12-05 20:15  suv789  阅读(3552)  评论(0)    收藏  举报