AddFontResource()在Win10周年更新中缓慢

本文关键字:更新 缓慢 周年 Win10 AddFontResource | 更新日期: 2023-09-27 18:05:14

我正在维护。net 3.5应用程序。在应用程序启动期间,从工作目录中读取许多字体并在Windows中注册。对于每个字体文件,我们使用对AddFontResource(string lpFileName) (Gdi32.dll)的pinvoke调用。

代码一直很快,直到我升级到Win10周年更新(在那之前,Win10没有问题)。现在一个呼叫需要半秒,这增加了90秒的启动时间。

你知道是什么导致这个问题吗?如何解决这个问题?

AddFontResource()在Win10周年更新中缓慢

Windows 10周年更新破坏了AddFontResource和RemoveFontResource api的性能。我们现在正在PortableApps.com处理此事。只有在Windows 10应用周年更新后才会出现这个问题。

我那台速度很慢的华硕T100敞篷车在USB驱动器上运行代码的速度比我的i7台式机在内部SSD上运行代码的速度还要快。

我也观察到了这个问题,但在我们的情况下,我找到了一个解决方案:调用AddFontResourceEx()。

我们代码的全部变化是:

// from this
AddFontResource(pFont);
// to this
AddFontResourceEx(pFont, FR_PRIVATE, 0);

这至少解决了我亲自测试过的一台机器运行缓慢的问题。