Help us understand the problem. What is going on with this article?

フォントをインストールする

More than 5 years have passed since last update.

仕事で自作のセットアッププログラムの中から Windows にフォントをインストールする必要が出てきた。
最近はフォントフォルダにコピーするだけではダメで、レジストリに登録する必要があるみたい。とりあえず見よう見まねでレジストリに登録するようコードを書いてみたけど何故だか上手くいかず、結局、Shell.Application をOLEオートメーション(って今でも言うの?)で操作する方法で何とか解決できた。

以下はそのサンプル。

sample.cs
var font_path = @"C:\PATH\TO\FONT.TTF";
if (File.Exists(font_path))
{
  Type instanceType = Type.GetTypeFromProgID("Shell.Application");
  dynamic shellApplicaition = Activator.CreateInstance(instanceType);
  dynamic folder = shellApplicaition.Namespace(Path.GetDirectoryName(font_path));
  dynamic folderItem = folder.ParseName(Path.GetFileName(font_path));
  folderItem.InvokeVerb("Install");
}
else
  MessageBox.Show("File not exist");
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away