使用此处和此处概述的 1809 用户字体支持,我过去用于管理字体安装的方法不再起作用,而是仅为运行安装的特定帐户安装字体。
这是一个非常标准的 PS 脚本,基于 powershell 库中的一个。
$ShellAppFontNamespace = 0x14
...
$ShellApp = New-Object -ComObject Shell.Application
$FontsFolder = $ShellApp.NameSpace($ShellAppFontNamespace)
foreach ($Font in $Fonts) {
Write-Host ('Installing font: {0}' -f $Font.BaseName)
$FontsFolder.CopyHere($Font.FullName)
break
}
我需要设置一些特定的 copyhere 标志来指示这是一个系统范围的命令吗?就目前而言,它看起来完全没有记录。
编辑:
我认为这正确指向 C:\Windows\Fonts 文件夹。
PS C:\WINDOWS\system32> $FontsFolder.Self
Application : System.__ComObject
Parent : System.__ComObject
Name : Fonts
Path : C:\Windows\Fonts
GetLink :
...
对于正在处理此问题的任何人,我都找到了解决方案。实际上,shell 路径/变量 0x14 被重载并重定向到用户的配置文件,而没有明确的方法来改变这种行为。结果该
CopyHere
命令无法保存到 C:\Windows\Fonts,并直接填充到用户的配置文件中。避免使用 shell 变量,手动复制文件并手动添加注册表项可以正常工作。如果有人需要,我在 powershell 库上打包了一个更新版本。