Wykrywanie czy program jest zainstalowany na komputerze

0

Witam. Jestem początkujący w programowaniu i postanowiłem, że zrobię aplikację okienkową w Visual Studio. Jest to program startowy do jednej z moich gier, która takiego nie posiada i włącza się od razu po kliknięciu w skrót, przez co omyłkowe kliknięcie potrafi wyprowadzić z równowagi. O ile launcher udało mi się dokończyć i działa bardzo dobrze to z programem autorun pojawił się mały problem...

Chciałbym, żeby po uruchomieniu program sprawdzał w rejestrze systemowym obecność zainstalowanej gry, a następnie zwracał wartość true/false,
która następnie dałaby mi możliwość zmiany przycisku w aplikacji między "Zainstaluj grę" a "Uruchom grę".

UninstallKey to {A9307076-3B18-4FB9-AA0F-7AEA99B650B5}

0

Znalazłem coś takiego ale jak już mówiłem jestem początkujący i nie wiem jak to przystosować:


public static bool IsApplictionInstalled(string p_name)
{
    string displayName;
    RegistryKey key;

    // search in: CurrentUser
    key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
    foreach (String keyName in key.GetSubKeyNames())
    {
        RegistryKey subkey = key.OpenSubKey(keyName);
        displayName = subkey.GetValue("DisplayName") as string;
        if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true)
        {
            return true;
        }
    }

    // search in: LocalMachine_32
    key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
    foreach (String keyName in key.GetSubKeyNames())
    {
        RegistryKey subkey = key.OpenSubKey(keyName);
        displayName = subkey.GetValue("DisplayName") as string;
        if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true)
        {
            return true;
        }
    }

    // search in: LocalMachine_64
    key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall");
    foreach (String keyName in key.GetSubKeyNames())
    {
        RegistryKey subkey = key.OpenSubKey(keyName);
        displayName = subkey.GetValue("DisplayName") as string;
        if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true)
        {
            return true;
        }
    }

    // NOT FOUND
    return false;
}
1

Wkleiłeś gotowe rozwiązanie. Potrzebujesz tylko "DisplayName" swojej aplikacji do przeszukiwania.

0

A gdzie w tym kodzie powinienem wkleić nazwę aplikacji?

2

To jest metoda, która zwraca true jeśli aplikacja jest zainstalowana, a false jeśli nie jest (lub nie znajdzie klucza z jakiegoś innego powodu). Przykładowo jeśli pod tym kluczem, który podałeś "DisplayName" aplikacji to "Moja super aplikacja" to robisz tak:

bool isInstalled;
isInstalled = IsApplictionInstalled("Moja super aplikacja");
0

Tylko jak tego użyć bo nie mam już pomysłów...

        if (IsApplictionInstalled == true)
            {
                //Wykonaj jeśli jest zainstalowana
            }

Wyrzuca błąd

0

Problem (chyba) rozwiązany....

Wystarczyło zrobić tak:
       if (IsApplictionInstalled("DisplayName aplikacji"))
            {
                MessageBox.Show("aplikacja jest zainstalowana..."); //PRZYKŁADOWY EFEKT DZIAŁANIA
            }
            else
            {
                MessageBox.Show("aplikacja NIE jest zainstalowana..."); //PRZYKŁADOWY EFEKT DZIAŁANIA
            }
0

Dziękuję za pomoc autorun w pełni działa!

1 użytkowników online, w tym zalogowanych: 0, gości: 1