Как проверить, установлена ​​ли программа в системе Windows

Как я могу проверить с помощью Java, установлена ​​ли программа в системе Windows, например, чтобы проверить наличие Mozilla Firefox?

2 ответа

Решение

Я предполагаю, что вы говорите о Windows. Поскольку Java намеревается быть независимым от платформы языком и то, как его определять, зависит от платформы, нет стандартного Java API для проверки этого. Однако вы можете сделать это с помощью вызовов JNI для DLL, которая сканирует реестр Windows. Затем вы можете просто проверить, присутствует ли в реестре раздел реестра, связанный с программным обеспечением. Существует сторонний Java API, с помощью которого вы можете сканировать реестр Windows: jRegistryKey.

Вот SSCCE с помощью jRegistryKey:

package com.stackru.q2439984;

import java.io.File;
import java.util.Iterator;

import ca.beq.util.win32.registry.RegistryKey;
import ca.beq.util.win32.registry.RootKey;

public class Test {

    public static void main(String... args) throws Exception {
        RegistryKey.initialize(Test.class.getResource("jRegistryKey.dll").getFile());
        RegistryKey key = new RegistryKey(RootKey.HKLM, "Software\\Mozilla");
        for (Iterator<RegistryKey> subkeys = key.subkeys(); subkeys.hasNext();) {
            RegistryKey subkey = subkeys.next();
            System.out.println(subkey.getName()); // You need to check here if there's anything which matches "Mozilla FireFox".
        }
    }

}

Однако, если вы намереваетесь иметь платформо-зависимое приложение, вам также придется учитывать Linux/UNIX/Mac/Solaris/ и т. Д. (Другими словами: везде, где может работать Java), чтобы определить, установлена ​​ли FF., В противном случае вам придется распространять его как приложение только для Windows и делать System#exit() вместе с предупреждением всякий раз, когда System.getProperty("os.name") не винда.

Извините, я не знаю, как определить на других платформах, установлен ли FF или нет, поэтому не ждите от меня ответа;)

Я не знаю ни одного API, который бы позволял вам это делать - я предполагаю, что самый общий метод - это проверять расположение файлов.

Другие подходы (например, проверка реестра Windows) зависят от ОС.

Другие вопросы по тегам