菜单

文件资源管理器附加项

相关源文件

此文档介绍了 PowerToys 中的文件资源管理器集成组件,包括预览处理程序和缩略图提供程序,它们通过支持其他文件类型来增强 Windows 文件资源管理器。有关独立的 Peek 工具的信息,请参阅Peek

概述

文件资源管理器加载项系统为 Windows 默认不支持的各种文件格式提供了预览和缩略图生成功能。该系统由集成到 Windows Shell 预览窗格的基于 COM 的预览处理程序、用于生成文件缩略图的缩略图提供程序以及基于 WebView2 的渲染共享基础结构组成。

架构

文件资源管理器加载项使用混合架构,结合了 C++ COM 组件和 .NET 可执行文件进行渲染。

来源:src/modules/previewpane/SvgPreviewHandlerCpp/SvgPreviewHandler.cpp158-207 src/modules/previewpane/MarkdownPreviewHandlerCpp/MarkdownPreviewHandler.cpp158-208 src/modules/previewpane/MonacoPreviewHandlerCpp/MonacoPreviewHandler.cpp158-207

预览处理程序

预览处理程序实现 IPreviewHandler COM 接口,以集成到 Windows Shell。每个处理程序都遵循启动单独的 .NET 可执行文件进行渲染的通用模式。

SVG 预览处理程序

SvgPreviewHandler 为 SVG 文件提供预览功能。

SVG 处理程序包含安全功能,可阻止潜在的危险元素,如 <script><image><feimage> 标签。

来源:src/modules/previewpane/SvgPreviewHandlerCpp/SvgPreviewHandler.cpp src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs src/modules/previewpane/common/Utilities/SvgPreviewHandlerHelper.cs27-32

Markdown 预览处理程序

MarkdownPreviewHandler 使用 HTML 输出渲染 Markdown 文件。

来源:src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs119-126 src/modules/previewpane/MarkdownPreviewHandlerCpp/MarkdownPreviewHandler.cpp

Monaco 预览处理程序

MonacoPreviewHandler 使用 Monaco Editor 提供带语法高亮的代码文件预览。

来源:src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandlerControl.cs359-407 src/Monaco/index.html src/modules/previewpane/MonacoPreviewHandler/Settings.cs

缩略图提供程序

缩略图提供程序为 Windows Explorer 中的文件类型生成预览图像。主要实现是 SvgThumbnailProvider

缩略图提供程序在无头模式下使用 WebView2 渲染 SVG 内容并将其捕获为位图图像。

来源:src/modules/previewpane/SvgThumbnailProvider/SvgThumbnailProvider.cs97-217 src/modules/previewpane/SvgThumbnailProvider/SvgThumbnailProvider.cs227-241 src/modules/previewpane/SvgThumbnailProvider/SvgThumbnailProvider.cs250-278

设置管理

文件资源管理器加载项支持通过 PowerToys 设置 UI 进行全面的配置。

设置类别属性描述
SVG 预览EnableSvgPreviewSvgBackgroundColorModeSvgBackgroundSolidColorSVG 预览处理程序配置
SVG 缩略图EnableSvgThumbnailSVG 缩略图生成
Markdown 预览EnableMdPreviewMarkdown 预览处理程序
Monaco 预览EnableMonacoPreviewMonacoPreviewWordWrapMonacoPreviewTryFormatMonacoPreviewMaxFileSizeMonacoPreviewFontSizeMonacoPreviewStickyScrollMonacoPreviewMinimap源代码预览配置
PDF 预览EnablePdfPreviewEnablePdfThumbnailPDF 预览和缩略图

来源:src/settings-ui/Settings.UI.Library/PowerPreviewProperties.cs src/modules/previewpane/MonacoPreviewHandler/Settings.cs src/modules/previewpane/SvgPreviewHandler/Settings.cs

WebView2 集成

所有预览处理程序均使用 WebView2 进行渲染,提供了一个通用的基于 Web 的渲染平台。

关键 WebView2 安全配置

  • SVG 和 Markdown 预览禁用脚本
  • 资源请求过滤,阻止外部内容
  • 自定义上下文菜单以限制功能
  • 虚拟主机映射以进行本地资源访问

来源:src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs234-252 src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs146-164 src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandlerControl.cs150-189

COM 注册和 Shell 集成

预览处理程序注册为 COM 组件以集成到 Windows Shell。

COM 处理程序实现了以下关键接口:

  • IPreviewHandler - 核心预览功能
  • IInitializeWithFile - 文件路径初始化
  • IPreviewHandlerVisuals - 视觉主题支持
  • IOleWindow - 窗口管理
  • IObjectWithSite - 站点集成

来源: src/modules/previewpane/SvgPreviewHandlerCpp/SvgPreviewHandler.cpp37-48 src/modules/previewpane/MarkdownPreviewHandlerCpp/MarkdownPreviewHandler.cpp37-48 src/modules/previewpane/MonacoPreviewHandlerCpp/MonacoPreviewHandler.cpp37-48

组策略支持

文件资源管理器加载项支持企业环境的组策略配置

GPO 设置注册表项效果
GetConfiguredSvgPreviewEnabledValue()SOFTWARE\Policies\Microsoft\PowerToys启用/禁用 SVG 预览
GetConfiguredMarkdownPreviewEnabledValue()SOFTWARE\Policies\Microsoft\PowerToys启用/禁用 Markdown 预览
GetConfiguredMonacoPreviewEnabledValue()SOFTWARE\Policies\Microsoft\PowerToys启用/禁用 Monaco 预览
GetConfiguredSvgThumbnailsEnabledValue()SOFTWARE\Policies\Microsoft\PowerToys启用/禁用 SVG 缩略图

当配置了 GPO 策略时,它们将覆盖用户设置,并在“设置”应用程序中显示适当的 UI 指示。

来源: src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs98-106 src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs96-105 src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandlerControl.cs93-101