This article向我展示了如何从脚本安装字体,但现在我遇到了删除它们的问题。我怎样才能做到这一点 ?任何语言都可以,我会将信息转换为我以后需要的信息。
编辑:好的,我现在知道如何卸载字体(至少大部分部分)。我正在拨打RemoveFontResource
的电话。之后我使用SendMessage
参数:0xffff,0x001D,0,0
(HWND_BROACAST,WM_FONTCHANGE ......我忘了其他两个参数代表的含义)。问题是,这会删除字体,但在Control Panel
的{{1}}条目中,字体仍然出现在那里(即使你试图从那里删除它,它也会说它不能从源文件或磁盘读取。
基本上,我按此顺序删除字体:
Fonts
卸载的正确方法是什么?
答案 0 :(得分:4)
一旦你找到Havenard提到的实际文件名并使用你提到的文章就可以做到
objFSO.DeleteFile(FontFilePath);
其中FontFilePath是您要删除的文件的文件路径。
更多信息: technet article
您可能遇到的问题,在我看到您的评论之前我没有想到的是,程序可能需要某个特定项目的字体。所有已知的系统字体都存储在注册表中。如果删除字体,还应从注册表中删除该键。注册表路径如下
Windows 95
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Fonts]
Windows NT
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
密钥如下:
Key name = Full name of the font
Key type = REG_SZ
Key Value = name of font file
答案 1 :(得分:4)
从我见过的所有文档中,这三行代码是“正确”的方法,但正如我们所知,它并不像预期的那样有效。
RemoveFontResource(fontPath);
DeleteFile(fontPath);
::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
<强> REBOOT 强>
我执行了上面的代码并重复了你的问题(控制面板仍显示字体,但字体文件已消失)。然后我重新启动了。现在字体已从字体控制面板小程序中消失。
还有其他要注意的事项:即使控制面板仍然显示字体为“那里”应用程序不再将其列在其字体列表中(我特意尝试使用Wordpad,删除webdings.ttf之前和之后 - 无需重新启动)
是的,我知道 - 重启是一个糟糕的解决方案 - 特别是如果你需要更新字体,因为你无法重新安装它(通过控制面板仍然 - 它声称字体仍然安装),直到你删除后重新启动(我试过了。
但是,如果您要做的只是删除字体 - 它不是最糟糕的解决方案 - 卸载后字体基本上消失了(应用程序看不到它,它只在控件中可见据我所知,面板字体,你不需要强行重启。
来自RemoveFontResourceFont上的SDK帮助(这可能表明为何会出现奇怪现象)
如果有未完成的引用 字体,相关资源 保持加载直到没有设备上下文 正在使用它。
答案 2 :(得分:1)
您可以在C:\ WINDOWS \ Fonts \
找到所有字体资源管理器将屏蔽此文件夹以显示字体名称而不是真实文件名,但其全部存在。您可以编辑和注释掉C:\ WINDOWS \ Fonts \ desktop.ini的行以禁用此功能并显示字体文件(可能需要重新打开资源管理器才能生效)。