ClickOnce アプリケーションがインストールされているか確認するための API が提供されていないため、レジストリにアンインストール情報があるかどうかで判定する。
レジストリキー
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
の下に、 DisplayName が調べたいアプリケーション名と一致するキーがあるかどうかで判定する。
C#
RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall");
if (regKey == null)
{
// レジストリキーがなければ、インストールされていない。
return;
}
string[] subKeyNames = regKey.GetSubKeyNames();
regKey.Close();
foreach (string subKeyName in subKeyNames)
{
RegistryKey subKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall\" + subKeyName);
string displayName = (string)subKey.GetValue("DisplayName", string.Empty);
subKey.Close();
if (displayName == "調べたいアプリケーション名")
{
// 調べたいアプリケーション名と DisplayName が一致すれば、インストールされている。
return;
}
}
// 調べたいアプリケーション名と一致する DisplayName のキーが見つからなければ、インストールされていない。
return;