С поддержкой пользовательских шрифтов 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
}
Есть ли какой-то конкретный флаг для копирования здесь, который мне нужно установить, чтобы указать, что теперь это общесистемная команда? В нынешнем виде он выглядит совершенно недокументированным.
Редактировать:
Я думаю, что это правильно указывает на папку C: \ Windows \ Fonts.
PS C:\WINDOWS\system32> $FontsFolder.Self
Application : System.__ComObject
Parent : System.__ComObject
Name : Fonts
Path : C:\Windows\Fonts
GetLink :
...
Для всех, кто имеет дело с этой проблемой, я нашел решение. По сути, путь / переменная оболочки 0x14 перегружается и перенаправляется в профиль пользователя без четкого способа изменить это поведение. В CopyHere
в результате команда не может быть сохранена в C: \ Windows \ Fonts и напрямую подключается к профилю пользователя.
Избегание использования переменных оболочки, копирование файла вручную и добавление ключа реестра вручную работает должным образом. я запаковал обновленную версию в галерее PowerShell, если кому-то это нужно.