Как я могу проверить с помощью Java, если программа установлена в системе Windows, например, для проверки Mozilla Firefox?
Как проверить, установлена ли программа в системе Windows
Ответ 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) зависят от ОС.