PowerToys 遥测系统提供使用情况分析和诊断信息收集,以帮助改进软件和支持用户。该系统包括基于 ETW 的运行时遥测、一个全面的错误报告工具以及在保持用户隐私方面的数据匿名化过程中的特定模块使用情况跟踪。
有关日志基础设施的信息,请参阅 2.4。有关错误报告 UI 和用户交互的详细信息,请参阅 7.4。
PowerToys 实施多层遥测方法
来源: tools/BugReportTool/BugReportTool/Main.cpp1-404 src/modules/ShortcutGuide/ShortcutGuide/overlay_window.cpp420-428
PowerToys 使用 Windows 事件跟踪 (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() 函数通过两种机制处理收集到的数据
<private_data> 占位符来源: tools/BugReportTool/BugReportTool/Main.cpp28-179
错误报告工具收集全面的系统诊断信息
Windows 环境
RtlGetVersion() 获取操作系统版本和内部版本信息PowerToys 安装
来源: 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 日志存储在 PowerToys 数据文件夹下的 etw/ 目录中,并且会从错误报告中排除,以防止敏感的遥测数据被意外共享。
来源: tools/BugReportTool/BugReportTool/Main.cpp60
该系统监视与 PowerToys 相关的注册表项和 COM 注册,以用于诊断目的
监视的注册表位置
CLSID 条目)注册表监视有助于诊断安装问题和与 Windows Explorer 的集成问题。
来源: tools/BugReportTool/BugReportTool/RegistryUtils.cpp11-37 tools/BugReportTool/BugReportTool/RegistryUtils.cpp39-47