tail -f /dev/null

If you haven't had any obstacles lately, you're not challenging. be the worst.

Language settings を変えずにインストールした Meiryo font が Windows Server で消滅する

Env

  • WindowsServer2016 English Full-Base
PS> add-type -AssemblyName system.drawing
PS> (New-Object System.Drawing.Text.InstalledFontCollection).Families | Where-Object { $_.Name -match 'Meiryo' }
Name
----
Meiryo UI


PS> Get-ChildItem -path C:\windows\Fonts | Where-Object {$_.Name -match "Meiryo"}
    ディレクトリ: C:\windows\Fonts
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2019/10/15     22:53        9525628 meiryo.ttc
-a----        2019/10/15     22:53        9742224 meiryob.ttc

Overview

  • AMI から EC2 instance 作成後、 Settings > Apps > Apps & features > Manage optional features から Meiryo font をインストールした.
  • サーバー再起動後, Meiryo font が消えていた.
  • 未使用の lang package を自動削除する TaskScheduler が動いていた.

Requirement

  • Meiryo font が消えないようにする.

Detail

  • 未使用の lang package を削除する TaskScheduler は Microsoft\Windows\LanguageComponentsInstaller\Uninstallation である.
    • Windows Server2016 から当該の TaskScheduler が動作するようになった.
    • サーバー起動後, 初期状態では Ready の状態であるが, 数日経過後何らかの契機でこの Task は実行される.
    • この Task が実行されると, user の language list に登録されていない英語以外の全ての言語が削除される.
      • 一度実行されるとこの Task は disable 状態となる.
    • Task 実行後, サーバーが再起動したら削除が完全に適用される.
  • 英語以外の Font が消えないようにするにはいくつか方法がある.
    • user の language list に日本語の language component を登録する.
      • 当該の TaskScheduler はどの user の language list にも登録されていない language component を uninstall する.
      • Start > Settings > Time & language > Region & language で日本語を追加する.
    • registry key を構成し, TaskScheduler により lang package が削除されるのを block する.
      • registry path: HKLM\Software\Policies\Microsoft\Control Panel\International
      • name: BlockCleanupOfUnusedPreinstalledLangPacks
      • type: REG_DWORD
      • value: 0x1
    • group policy object (GPO) を構成し, lang package が削除されるのを block する.
      • Control Panel/Regional and Language option/BlockCleanupOfUnusedPreinstalledLangPacks

References