en / de
AI
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

Überprüfen welche Version einer Software installiert ist

Manchmal ist es notwendig, in einer Applikation zu überprüfen, ob eine bestimmte Software installiert ist oder nicht.

Die zwei offensichtlichsten Ansätze sind:

Der erste Ansatz ist sehr unsicher, da unter Umständen eine Software nicht in den Standardordner für Programme installiert wurde.

Muss man dann noch die Version einer installierten Software wissen, bleibt einem sowie nur noch Variante 2 mit der Registry.

Wer Windows kennt, weiss dass in der Systemsteuerung eine Liste mit allen Programmen und der installierten Programmversion vorhanden ist. Die Information muss also vorhanden sein.

Nicht so offensichtlich ist, dass die Liste nicht einfach unter einem einzigen Pfad in der Registry zu finden ist, sondern sich aus 3 verschiedenen Listen zusammensetzt.

3 Locations:

Jeder Subkey unter einem von diesen Pfaden enthält ein DisplayName Attribut, sowie ein DisplayVersion Attribut. Anhand von diesen kann festgestellt werden ob eine bestimmte Software und Version auf dem System installiert ist.

 

Folgende Codefragemnte zeigen wie dies in .NET mit C# umgesetzt werden kann:

public string GetVersionOfInstalledProgram(string programName)
{
  string keyName = @"SOFTWAREMicrosoftWindowsCurrentVersionUninstall";
  string foundVersion = FindProgramVersionInSubKey(Registry.CurrentUser, keyName, programName);
  if (foundVersion != null)
  {
    return foundVersion;
  }
  keyName = @"SOFTWAREMicrosoftWindowsCurrentVersionUninstall";
  foundVersion = FindProgramVersionInSubKey(Registry.LocalMachine, keyName, programName);
  if (foundVersion != null)
  {
    return foundVersion;
  }
  keyName = @"SOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionUninstall";
  foundVersion = FindProgramVersionInSubKey(Registry.LocalMachine, keyName, programName);
  if (foundVersion != null)
  {
    return foundVersion;
  }
  return null;
  }

private string FindProgramVersionInSubKey(RegistryKey rootKey, string subKeyName, string programName)
{
  using (RegistryKey key = rootKey.OpenSubKey(subKeyName))
  {
    if (key == null)
    {
      return null;
    }
    foreach (string keyname in key.GetSubKeyNames())
    {
      using (RegistryKey subkey = key.OpenSubKey(keyname))
      {
        if (subkey == null)
        {
          continue;
        }
        string displayName = subkey.GetValue("DisplayName") as string;
        if (displayName != null && programName.Equals(displayName))
        {
          string displayVersion = subkey.GetValue("DisplayVersion") as string;
          if (!String.IsNullOrWhiteSpace(displayVersion))
          {
            return displayVersion;
          }
        }
      }
    }
  }
  return null;
}

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden

Copyright © 2025 Noser Engineering AG – Alle Rechte vorbehalten.

NACH OBEN
Privacy Policy Cookie Policy
Zur Webcast Übersicht