C#を使用してレジストリのキー値を読み込む
1620 ワード
背景
最近1つの機能を作る時、あるソフトウェアがインストールされているかどうかを判断する必要があります.インストールがなければ対応する機能が表示されません.個人的には、各ソフトウェアがインストールされた後、レジストリに対応するキー値が登録され、ユニークなキー値があるため、レジストリでキー値を読み取り、対応するキー値でインストールするかどうかを判断したほうがいいと思います.最初はC#を使っていたので、自分で直接公式サイトに行って対応するAPIがあるかどうかを見て、その後自分でテストをして成功したことがわかりました.次は自分のテストコードを貼って、今回の勉強を記録します.
コード#コード#
最近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();
}
}