0

我维护了一个库,该库提供用户可访问的位置,用于跨多个平台检索和存储配置、缓存和其他数据。在 Windows 上,此功能是使用KnownFolder API实现的。

最近我收到一个请求,要求在 Windows上添加对 2018 年添加的非管理员字体目录的支持。

令人惊讶的是,这个目录并没有添加到 KnownFolder API 中——这是故意的还是被忽视了?

4

1 回答 1

0

出现在问题评论中并且可能会知道原因的 Raymond Chen 似乎要么不愿分享,要么自己无知。但如果你愿意接受一些猜测,我可以猜到他在字里行间可能想说什么:

因为用户字体目录不关你的事。

这适用于几个层面:

  • 这不关你的事,因为你不应该代表用户安装字体。如果您想在应用程序中使用特定字体,您应该将它与您的应用程序捆绑在一起,并使用AddFontResourceEx带有FR_PRIVATE标志的 API 来加载它。如果用户想在他们的配置文件中永久安装字体,这取决于他们和已经提供的操作系统设施。 您的服务不是必需的。
  • 这不关您的事,因为将字体放在此目录中既不足以也不需要安装字体。要安装字体,必须获取字体的完整路径并将其放入存储在特定注册表项下的值中,这也不完全是记录在案的 API(尽管众所周知,密钥是HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts)。地点%USERPROFILE%\AppData\Local\Microsoft\Windows\Fonts只是习惯性的;枚举该目录的内容并不能保证返回所有用户拥有的字体,并且将字体放入其中也不足以安装它们。单独的路径对于跨平台应用程序来说是无用的,因为无论如何它都需要执行特定于平台的步骤来安装或枚举用户拥有的字体。哪些不是你首先要管理的。

换句话说,对于您可能想用它完成的任何事情,它都不是一个好的 API,甚至不清楚他们是否希望您能够完成它,因为这样做可能会造成滥用的可能性。

于 2022-01-08T17:01:15.813 回答