PowerShellで外字コピー屋さんの外字インストール時の挙動を模倣する

外字コピー屋さんのメンテナンスが終了している事もあり、代替を考えたが、わりと単純な挙動のようなので PowerShell で行ってみた。

調査

以下、マイクロソフトが提供しているトラブルシュート用のツールがあり、それを使用して 外字コピー屋さん の挙動を確認する。

technet.microsoft.com

プロセスを監視しつつ、外字コピー屋さんで外字をシステムに適用する。
以下、プロセスの WriteFile と RegSetValue をフィルタしたものになる。

f:id:kameya_takefumi:20180614164805p:plain

  • 外字ファイルをユーザ単位のフォルダ配下に配置している。
    • C:\Users\{ユーザ名}\AppData\Local\cpeudc
  • (ユーザ単位の)レジストリに外字ファイルの配置場所を設定している。
    • HKEY_CURRENT_USER\EUDC\932\SystemDefaultEUDCFont

この2点を押さえれば、同じ挙動になると思う。

前提条件

  • Windows 7 Professional
  • ファイルを選択し右クリック → PowerShell で実行
  • ps1ファイルは外字ファイル EUDC.euf, EUDC.TTE と同じ場所にある事

外字適用.ps1

$targetPath = "C:\Users\$env:USERNAME\AppData\Local\cpeudc" 

New-Item -Path $targetPath -ItemType "directory" -Force

Copy-Item "EUDC.euf" $targetPath -Force
Copy-Item "EUDC.TTE" $targetPath -Force

Set-ItemProperty -Path "Registry::HKEY_CURRENT_USER\EUDC\932" -Name "SystemDefaultEUDCFont" -Value ($targetPath + "\EUDC.TTE")

確認

OS標準の 外字エディター を起動し、意図した外字が表示される事を確認する。
適用されているため、これで問題ないと思う。

余談ですが、ヘルプファイルである cpeudc.chm の内容がちゃんとしており助かりました。
こういうのをちゃんと書いている人、本当凄い、尊敬する。