We rise up for the things we believe in over and over again
Установка шрифтов - дело весьма нехитрое. Цапнул файл шрифта да бросил его в папку %windir%\Fonts. Только права для этого администраторские нужны, но это уже факт само собой подразумевающийся.
Уже довольно давно была поставлена задача - установить корпоративные шрифты на все компьютеры домена. Компов достаточно много, намного больше одной сотни. Что делать будем? Как что - использовать все те же групповые политики. Раскидаем при помощи сценария запуска компьютера файлы шрифтов куда надо, и дело с концом. Не тут-то было.
Есть в этом процессе одна тонкость. Для того, чтобы операционная система новый шрифт узнала, его мало просто скопировать в папку шрифтов. Сам шрифт должен быть прописан в системном реестре вот в этом ключе: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts. Если установку шрифта производить при помощи Проводника Windows, все нужные записи в этом ключе создаются автоматически, а вот в случае использования сторонних утилит вида Total Commander этого не произойдет. Что делать в таком случае?
Сайт Hey, Scripting Guy! поведал о замечательной функции CopyHere, которая и позволяет запрограммировать взаимодействие с реестром ОС для установки шрифта - Клац!. В общем случае код будет выглядеть так:
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FONTS)
objFolder.CopyHere "FONT-NAME"
Казалось бы, проблема решена. Почти так. Последнее препятствие - уже имеющийся шрифт. В этом случае система выкинет предупреждение, что шрифт уже имеется, и для установки его новой версии нужно снести старый. Этого хотелось бы избежать. Значит, нужно проверять наличие шрифта перед копированием его в папку %windir%\fonts. Сделать это легко:
Set objFSO = CreateObject("Scripting.FileSystemObject")
If not objFSO.FileExists (FONT-IN-SYSTEM) then objFolder.CopyHere "FONT-NAME"
Сначала смотрим, есть ли указанный файл в системе. Если нет - копируем. Если есть - оставляем его в покое.
Cобрав все в один сценарий, получаем примерно следующее:
Install Corporate Fonts.vbs
Сценарий этот расширяем. Необходимо лишь добавлять блоки 'install font с изменением имени шрифта и пути к нему.
Остальное тривиально - групповые политики, сценарии запуска, подстановка полученного сценария, применение политики, перезапуск системы...
Уже довольно давно была поставлена задача - установить корпоративные шрифты на все компьютеры домена. Компов достаточно много, намного больше одной сотни. Что делать будем? Как что - использовать все те же групповые политики. Раскидаем при помощи сценария запуска компьютера файлы шрифтов куда надо, и дело с концом. Не тут-то было.
Есть в этом процессе одна тонкость. Для того, чтобы операционная система новый шрифт узнала, его мало просто скопировать в папку шрифтов. Сам шрифт должен быть прописан в системном реестре вот в этом ключе: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts. Если установку шрифта производить при помощи Проводника Windows, все нужные записи в этом ключе создаются автоматически, а вот в случае использования сторонних утилит вида Total Commander этого не произойдет. Что делать в таком случае?
Сайт Hey, Scripting Guy! поведал о замечательной функции CopyHere, которая и позволяет запрограммировать взаимодействие с реестром ОС для установки шрифта - Клац!. В общем случае код будет выглядеть так:
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FONTS)
objFolder.CopyHere "FONT-NAME"
Казалось бы, проблема решена. Почти так. Последнее препятствие - уже имеющийся шрифт. В этом случае система выкинет предупреждение, что шрифт уже имеется, и для установки его новой версии нужно снести старый. Этого хотелось бы избежать. Значит, нужно проверять наличие шрифта перед копированием его в папку %windir%\fonts. Сделать это легко:
Set objFSO = CreateObject("Scripting.FileSystemObject")
If not objFSO.FileExists (FONT-IN-SYSTEM) then objFolder.CopyHere "FONT-NAME"
Сначала смотрим, есть ли указанный файл в системе. Если нет - копируем. Если есть - оставляем его в покое.
Cобрав все в один сценарий, получаем примерно следующее:
Install Corporate Fonts.vbs
Сценарий этот расширяем. Необходимо лишь добавлять блоки 'install font с изменением имени шрифта и пути к нему.
Остальное тривиально - групповые политики, сценарии запуска, подстановка полученного сценария, применение политики, перезапуск системы...