Windows 中修改 PDF 格式默认图标
前排提示:本文默认您已经掌握
- 按文件类型更改默认打开方式;
- 操作注册表编辑器
regedit。
为什么非得换图标不可
Windows 10 默认的浏览器是 Microsoft Edge,但我常用的浏览器是 Google Chrome。平常打开网页啥的都是用 Chrome,可到了打开 pdf 的时候,Edge 却突然冒了出来,没有作为一个标签页出现在我已经打开的 Chrome 里,而是开了另一个进程。我总觉得这样是在浪费我电脑的资源,所以决定把 pdf 文件的默认打开方式从 Edge 改为 Chrome。
不改不要紧,一改发现所有 pdf 文件的图标也跟着变了。


这未免太奇怪了吧!从图标上完全看不出是 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 里。

更改 DefaultIcon
接下来就是关键一步:改图标。可以看到 ChromeHTML 里有一个项叫做 DefaultIcon,它的值是(前提是你 Chrome 的安装路径跟我一样):
1 | C:\Program Files (x86)\Google\Chrome\Application\chrome.exe,0 |
上面这一行代表,默认图标用的是 chrome.exe 的第 0 个图标。那么 chrome.exe 包含的图标都有什么呢?通过「为文件夹更改图标」我们可以访问到这些图标,可以看出,Chrome 是真的没有 pdf 专精的图标:

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

所以我们要把 ChromePDF 之中 DefaultIcon 的数据改成如下这样(前提是你 Edge 的安装路径跟我一样):
1 | C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe,13 |

更改 FileAssociations
-
刚才做的工作,是新建一种默认图标为 pdf 的打开方式。接下来,我们要把这种打开方式关联到 pdf 文件上。
-
在注册表编辑器中,通过“按数据
ChromeHTML查找”发现,真正将这个打开方式关联到 pdf 文件的项是这个:1
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\Google Chrome\Capabilities\FileAssociations
-
点击这个项会发现,里面的数据清一色都是
ChromeHTML,无论格式是 pdf、html、webp 还是 svg,都用的是这一套。在这里我只把.pdf这一条改为了ChromePDF,其他的我暂时不需要改,不过要改的话也同理。

完成
-
改好之后,就只差最后一步了,就是重新设置 pdf 文件的默认打开方式为 Chrome 浏览器,让它获取到最新的注册表。
-
至此终于实现了一开始的需求。我自认为这个解决方案的好处在于,并没有强硬地通过修改
HKEY_CLASSES_ROOT或者HKEY_CURRENT_USER当中.pdf这个项来更改图标,而是在这套既有的框架内,在更上游处自定义了一种打开方式,自上而下、顺理成章地修改了 pdf 文件的图标。