Com o suporte a fontes de usuário 1809 descrito aqui e aqui , o método que usei no passado para fazer instalações administrativas de fontes não funciona mais, instalando a fonte apenas para uma conta específica na qual a instalação é executada.
É um script PS bastante padrão, baseado em um da galeria 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
}
Existe algum sinalizador específico para copyhere que eu preciso definir para indicar que este é um comando de todo o sistema agora? Como está agora, parece totalmente indocumentado.
Editar:
Eu acho que isso está apontando corretamente para a pasta C:\Windows\Fonts.
PS C:\WINDOWS\system32> $FontsFolder.Self
Application : System.__ComObject
Parent : System.__ComObject
Name : Fonts
Path : C:\Windows\Fonts
GetLink :
...
Para quem está lidando com esse problema, encontrei a resolução. Efetivamente, o caminho/variável do shell 0x14 está sendo sobrecarregado e redirecionado para o perfil do usuário sem uma maneira clara de alterar esse comportamento. Como resultado, o
CopyHere
comando falha ao salvar em C:\Windows\Fonts e é transferido diretamente para o perfil do usuário.Evitar o uso de variável shell, copiar o arquivo manualmente e adicionar a chave de registro manualmente funciona como deveria. Eu empacotei uma versão atualizada na galeria do powershell, se alguém precisar.