【问题标题】:Font file is being held by system process字体文件被系统进程持有
【发布时间】:2015-02-24 22:56:01
【问题描述】:

在我的环境中,system.exe 进程正在保存一个 TTF 文件(字体文件)。
我不明白为什么会这样。
我已尝试取消注册(卸载)字体,但系统进程仍在保留它。
我的问题是当我使用 ttf 文件更新软件包时,它需要重新启动系统,因为文件在被保存时被替换。
有没有人有任何建议为什么它被系统进程使用以及可以做什么?
谢谢

【问题讨论】:

  • 我不知道 Windows 能够保存字体文件...
  • 顺便说一句,系统怎么还能保存一个甚至不存在的文件? (如果你删除它)
  • 我从来没有说过要删除文件。并且该文件确实存在。
  • 好吧,您说的是 uninstall,我想,当您卸载字体时,它会从目录中删除。我想我错了
  • 不是从目录中删除,而是从windows字体集合中删除

标签: windows process windows-installer system installshield


【解决方案1】:

此行为是在 2014 年 8 月发布的安全更新中引入的(有关详细信息,请参阅 security bulletin MS14-045),并适用于未安装在默认字体目录中的任何字体文件。

尽管KB article for MS14-045 将此列为“已知问题”,但现在已将其记录为预期行为。请参阅 MSDN 中的Font Installation and Deletion

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

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

这意味着如果在升级字体时必须重新启动机器是不可接受的,则字体文件必须安装在默认字体目录中。 (我相信这has always been无论如何都是推荐的做法。)

【讨论】:

  • 总结一下:(1) 卸载有问题的字体,(2) 从 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts' 中删除其引用并重新启动。提升权限、获取所有权或杀死“fontdrvhost.exe”将不起作用。我知道这是一个老问题,但它是谷歌的第一个结果,我今天真的很难弄清楚。
  • @rvnlord,handles.exe 实用程序(可从 Microsoft 的网站获得)可用于识别谁打开了特定文件。但在这种情况下,唯一支持 删除字体文件的方法是取消注册字体,然后重新启动。杀死所有打开文件的进程可能会或可能不会起作用,但即使这样做也可能会使系统变得如此不稳定,以至于您无论如何都需要重新启动。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 2010-12-29
  • 1970-01-01
相关资源
最近更新 更多