Windows 中修改 PDF 格式默认图标

前排提示:本文默认您已经掌握

  1. 按文件类型更改默认打开方式;
  2. 操作注册表编辑器 regedit

为什么非得换图标不可

Windows 10 默认的浏览器是 Microsoft Edge,但我常用的浏览器是 Google Chrome。平常打开网页啥的都是用 Chrome,可到了打开 pdf 的时候,Edge 却突然冒了出来,没有作为一个标签页出现在我已经打开的 Chrome 里,而是开了另一个进程。我总觉得这样是在浪费我电脑的资源,所以决定把 pdf 文件的默认打开方式从 Edge 改为 Chrome。

不改不要紧,一改发现所有 pdf 文件的图标也跟着变了。

改之前 (用 Edge 打开的默认图标)
改之前 (用 Edge 打开的默认图标)

改之后 (用 Chrome 打开的默认图标)
改之后 (用 Chrome 打开的默认图标)

这未免太奇怪了吧!从图标上完全看不出是 pdf 不说,这跟 html 文件完全一样,如何区分?我会下意识以为这是个网站咧!所以我的需求就出现了:默认用 Chrome 浏览器打开 PDF 文件,但保留用 Edge 打开时的图标


网上是怎么说的

这种事情当然是先百度谷歌。网上首先说,文件夹是可以任意改图标的,这我当然知道。然后网上说,按文件类型改图标可以通过改注册表来实现,又是说 HKEY_CURRENT_USER,又是说 HKEY_CLASSES_ROOT 的,我找了半天也不知是哪里要改是哪里不改。

最终看到一个稍微靠谱的文章,让我去下面这个路径:

1
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice

找到字符串 ProgId,它的数据就是默认的打开方式了。默认为 Edge 打开的时候,这里的数据是 MSEdgePDF;而默认为 Chrome 打开的时候,这里的数据是 ChromeHTML

这说明微软好心给咱单做了一套 pdf 的打开方式,而 Chrome 就偷了个懒,管它 pdf 还是 html,全都用 html 那套了。


解决办法

新建注册表项

既然 Edge 有 pdf 和 html 的分化,那么咱也手动给 Chrome 添加一下好了。在注册表编辑器中,通过“按项 ChromeHTML 查找”发现,这套打开方式的注册表位于:

1
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ChromeHTML

Classes 这个父项下,新建一个项与 ChromeHTML 并列,命名为 ChromePDF,然后将 ChromeHTML 里所有项、值和数据全都拷贝到 ChromePDF 里。

ChromePDF
ChromePDF

更改 DefaultIcon

接下来就是关键一步:改图标。可以看到 ChromeHTML 里有一个项叫做 DefaultIcon,它的值是(前提是你 Chrome 的安装路径跟我一样):

1
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe,0

上面这一行代表,默认图标用的是 chrome.exe 的第 0 个图标。那么 chrome.exe 包含的图标都有什么呢?通过「为文件夹更改图标」我们可以访问到这些图标,可以看出,Chrome 是真的没有 pdf 专精的图标:

chrome.exe
chrome.exe

那么就干脆还是用 Edge 带的 pdf 图标吧!从 Edge 的默认安装路径找到 msedge.exe,复制它的路径,以同样的办法找到其中包含的 pdf 的图标。根据下图可以数出,我想要的 pdf 图标在第 13 个(当然还是从 0 开始数):

msedge.exe
msedge.exe

所以我们要把 ChromePDF 之中 DefaultIcon 的数据改成如下这样(前提是你 Edge 的安装路径跟我一样):

1
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe,13

DefaultIcon
DefaultIcon

更改 FileAssociations

  • 刚才做的工作,是新建一种默认图标为 pdf 的打开方式。接下来,我们要把这种打开方式关联到 pdf 文件上。

  • 在注册表编辑器中,通过“按数据 ChromeHTML 查找”发现,真正将这个打开方式关联到 pdf 文件的项是这个:

    1
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\Google Chrome\Capabilities\FileAssociations
  • 点击这个项会发现,里面的数据清一色都是 ChromeHTML,无论格式是 pdf、html、webp 还是 svg,都用的是这一套。在这里我只把 .pdf 这一条改为了 ChromePDF,其他的我暂时不需要改,不过要改的话也同理。

FileAssociations
FileAssociations


完成

  • 改好之后,就只差最后一步了,就是重新设置 pdf 文件的默认打开方式为 Chrome 浏览器,让它获取到最新的注册表。

  • 至此终于实现了一开始的需求。我自认为这个解决方案的好处在于,并没有强硬地通过修改 HKEY_CLASSES_ROOT 或者 HKEY_CURRENT_USER 当中 .pdf 这个项来更改图标,而是在这套既有的框架内,在更上游处自定义了一种打开方式,自上而下、顺理成章地修改了 pdf 文件的图标。