Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Здесь SSCCE с помощью jRegistryKey:

package com.stackoverflow.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 anything which matches "Mozilla FireFox".
        }
    }

}

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

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

Ответ 2

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

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