字体文件被系统进程占用。

6

在我的环境中,一个TTF文件(字体文件)被system.exe进程占用。
我不明白为什么会这样。
我已经尝试注销(卸载)该字体,但系统进程仍然占用它。
我的问题是,当我使用带有TTF文件的包更新时,由于文件被占用而需要系统重启。
有没有人有任何建议,为什么系统进程正在使用它以及可以做些什么?
谢谢


我不知道Windows能够保存字体文件... - user4396006
顺便问一下,如果你删除了一个文件,系统怎么可能还在持有它呢? - user4396006
我从未说过要删除文件,而且这个文件确实存在。 - liorafar
好的,你说“卸载”,我想当你卸载字体时,它会从目录中删除。那我猜我错了。 - user4396006
它并非从目录中删除,而是从Windows字体集合中删除。 - liorafar
1个回答

7
这种行为是在2014年8月发布的安全更新中引入的(有关详细信息,请参见安全公告MS14-045),适用于未安装在默认字体目录中的任何字体文件。
尽管MS14-045 KB文章将此列为“已知问题”,但现在已将其记录为预期行为。请参阅MSDN中的字体安装和删除

从不同于%windir%\fonts文件夹的位置安装的字体,在加载到任何活动会话中(包括会话0)时都无法进行修改。[...]

永久字体在重启后仍保持安装状态,并由所有创建的会话加载。

这意味着,如果在升级字体时重新启动机器是不可接受的,则必须将字体文件安装在默认字体目录中。(我认为这一直以来都是推荐的做法。)

1
总结一下:(1)卸载相关字体,(2)从“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts”中移除相关引用并重启。提升权限、获取所有权或终止“fontdrvhost.exe”进程都不起作用。我知道这是一个老问题,但它是谷歌搜索结果的第一个,并且今天我真的很难解决它。 - rvnlord
@rvnlord,handles.exe实用程序(可从Microsoft网站下载)可用于识别谁打开了特定文件。但在这种情况下,唯一受支持的删除字体文件的方法是注销字体,然后重新启动。终止所有打开该文件的进程可能有效,也可能无效,但即使它有效,它也很可能会使系统不稳定,因此您仍然需要重新启动。 :-) - Harry Johnston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接