菜单

遥测系统

相关源文件

PowerToys 遥测系统提供使用情况分析和诊断信息收集,以帮助改进软件和支持用户。该系统包括基于 ETW 的运行时遥测、一个全面的错误报告工具以及在保持用户隐私方面的数据匿名化过程中的特定模块使用情况跟踪。

有关日志基础设施的信息,请参阅 2.4。有关错误报告 UI 和用户交互的详细信息,请参阅 7.4

概述

PowerToys 实施多层遥测方法

  • ETW 遥测:用于性能监控和使用情况分析的实时事件跟踪
  • 错误报告收集:用于支持场景的全面诊断数据收集
  • 模块分析:单个实用程序使用情况跟踪和性能指标
  • 隐私保护:敏感用户数据的自动匿名化

来源: tools/BugReportTool/BugReportTool/Main.cpp1-404 src/modules/ShortcutGuide/ShortcutGuide/overlay_window.cpp420-428

基于 ETW 的运行时遥测

PowerToys 使用 Windows 事件跟踪 (ETW) 作为收集实时使用和性能数据的主要遥测基础架构。

ETW 提供程序配置

ETW 系统提供结构化的事件日志记录,对性能影响最小

来源: tools/BugReportTool/BugReportTool/Main.cpp60-61

模块使用情况跟踪

各个 PowerToys 模块实现了特定的遥测功能以跟踪使用模式

ShortcutGuide 遥测示例

  • 会话持续时间跟踪
  • 窗口关闭类型分类
  • 用户交互模式

当叠加层关闭时,Trace::SendGuideSession() 函数会捕获会话指标。

来源: src/modules/ShortcutGuide/ShortcutGuide/overlay_window.cpp424-426

错误报告收集系统

错误报告工具(PowerToys.BugReportTool.exe)为支持场景提供全面的诊断数据收集。

数据收集组件

来源: tools/BugReportTool/BugReportTool/Main.cpp294-403

隐私保护

错误报告系统通过数据匿名化实现全面的隐私保护

数据类型隐私机制实现
文件路径路径匿名化escapeInfo 映射会移除个人路径
用户文本文本 redaction ( redaction )自定义操作和快捷方式替换为 <private_data>
连接密钥密钥掩码隐藏“鼠标无边框”中的安全密钥
缓存文件文件删除排除查询历史记录和 MRU 文件
个人文件夹文件夹排除移除模板和缓存目录

匿名化过程: HideUserPrivateInfo() 函数通过两种机制处理收集到的数据

  1. JSON 字段替换:敏感字段替换为 <private_data> 占位符
  2. 文件删除:缓存文件和个人数据被完全删除

来源: tools/BugReportTool/BugReportTool/Main.cpp28-179

系统信息收集

错误报告工具收集全面的系统诊断信息

Windows 环境

  • 通过 RtlGetVersion() 获取操作系统版本和内部版本信息
  • 用户语言和区域设置偏好
  • 显示配置和监视器详细信息

PowerToys 安装

  • 文件结构和版本信息
  • 注册表项和 COM 注册
  • 安装完整性验证

来源: tools/BugReportTool/BugReportTool/Main.cpp181-270 tools/BugReportTool/BugReportTool/InstallationFolder.cpp211-218 tools/BugReportTool/BugReportTool/RegistryUtils.cpp232-313

事件查看器集成

EventViewer 类提供与 PowerToys 进程相关的 Windows 事件日志条目的自动收集。

事件查询系统

该系统查询应用程序事件日志,查找最近 30 天内包含 PowerToys 进程名的条目,每次处理 50 个事件批次以提高性能。

来源: tools/BugReportTool/BugReportTool/EventViewer.cpp1-181

数据存储和清理

临时文件管理

遥测系统管理临时文件并维护数据保留策略

用于隐私的文件排除

AdvancedPaste/lastQuery.json
AdvancedPaste/kernelQueryCache.json  
PowerToys Run/Cache
PowerRename/replace-mru.json
PowerRename/search-mru.json
PowerToys Run/Settings/UserSelectedRecord.json
PowerToys Run/Settings/QueryHistory.json
NewPlus/Templates
etw/

存档创建: ZipFolder() 函数创建带时间戳的诊断存档,格式为 PowerToysReport_YYYY-MM-DD-HH-MM-SS.zip

来源: tools/BugReportTool/BugReportTool/Main.cpp51-61 tools/BugReportTool/BugReportTool/ZipTools/zipfolder.cpp5-50

ETW 日志管理

ETW 日志存储在 PowerToys 数据文件夹下的 etw/ 目录中,并且会从错误报告中排除,以防止敏感的遥测数据被意外共享。

来源: tools/BugReportTool/BugReportTool/Main.cpp60

注册表和配置遥测

该系统监视与 PowerToys 相关的注册表项和 COM 注册,以用于诊断目的

监视的注册表位置

  • PowerToys COM 类注册(CLSID 条目)
  • 文件资源管理器集成处理程序
  • 预览处理程序注册
  • 右键菜单处理程序条目
  • 兼容性标志和设置

注册表监视有助于诊断安装问题和与 Windows Explorer 的集成问题。

来源: tools/BugReportTool/BugReportTool/RegistryUtils.cpp11-37 tools/BugReportTool/BugReportTool/RegistryUtils.cpp39-47