C#を使用してレジストリのキー値を読み込む

1620 ワード

背景
最近1つの機能を作る時、あるソフトウェアがインストールされているかどうかを判断する必要があります.インストールがなければ対応する機能が表示されません.個人的には、各ソフトウェアがインストールされた後、レジストリに対応するキー値が登録され、ユニークなキー値があるため、レジストリでキー値を読み取り、対応するキー値でインストールするかどうかを判断したほうがいいと思います.最初はC#を使っていたので、自分で直接公式サイトに行って対応するAPIがあるかどうかを見て、その後自分でテストをして成功したことがわかりました.次は自分のテストコードを貼って、今回の勉強を記録します.
コード#コード#
class Program
    {
        static void Main(string[] args)
        {
            string registry_key = @"Software\Microsoft\Office\";
            int i = 0;
            using (RegistryKey key = Registry.CurrentUser.OpenSubKey(registry_key))
            {
                foreach (string subkey_name in key.GetSubKeyNames())
                {
                    Console.WriteLine(++i + "\t" + subkey_name);
                    using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                    {
                        Console.WriteLine(subkey.GetValue("DisplayName"));
                    }

                    if (subkey_name.Contains("Teams"))
                    {
                        RegistryKey teamsKey = key.OpenSubKey(subkey_name);
                        foreach (string teamsNames in teamsKey.GetSubKeyNames())
                        {
                            Console.WriteLine("\t\t" + teamsNames);
                        }
                        object displayName = teamsKey.GetValue("ApplicationDescription");
                        Console.WriteLine("\t\t Name is " + displayName.ToString());
                    }
                }
            }

            Console.ReadKey();
        }
    }