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