Wie kann ich mit Java überprüfen, ob ein Programm auf einem Windows-System installiert ist, um beispielsweise nach Mozilla Firefox zu suchen?Wie überprüft man, ob ein Programm unter Windows installiert ist
Antwort
Ich nehme an, dass Sie über Windows sprechen. Da Java eine plattformunabhängige Sprache sein soll und die Art und Weise, wie sie zu bestimmen ist, von Plattform zu Plattform unterschiedlich ist, gibt es keine standardmäßige Java-API, um dies zu überprüfen. Sie können es jedoch mit Hilfe von JNI Aufrufe einer DLL, die die Windows-Registrierung durchsucht. Sie können dann einfach überprüfen, ob der der Software zugeordnete Registrierungsschlüssel in der Registrierung vorhanden ist. Es gibt eine Java-API von Drittanbietern, mit der Sie die Windows-Registrierung crawlen können: jRegistryKey.
Hier ist ein SSCCE mit Hilfe von 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's anything which matches "Mozilla FireFox".
}
}
}
Wenn Sie jedoch beabsichtigen, eine plattformunabhängigen Anwendung haben, dann werden Sie auch zu berücksichtigen, haben die Linux/UNIX/Mac/Solaris/etc (mit anderen Worten: überall wo Java laufen kann) Wege zu erkennen, ob FF installiert ist. Andernfalls müssen Sie es als reine Windows-Anwendung verteilen und eine System#exit()
zusammen mit einer Warnung ausführen, wenn System.getProperty("os.name")
nicht Windows.
Sorry, ich weiß nicht, wie in anderen Plattformen zu erkennen, ob FF installiert ist oder nicht, also nicht erwarten, eine Antwort von mir, dass;)
Es gibt keine API, die ich kenne, mit der Sie dies tun können - ich erwarte, dass die allgemeinste Methode ist, Dateispeicherorte zu überprüfen.
Andere Ansätze (wie das Überprüfen der Windows-Registrierung) sind vom Betriebssystem abhängig.
- 1. Wie überprüft man, ob Suhosin installiert ist?
- 2. Wie überprüft man, ob Flash installiert ist?
- 3. Wie überprüft man, ob ein Juwel installiert ist?
- 4. Wie überprüft man, ob ein Windows-Dienst in C installiert ist #
- 5. Wie überprüft man, ob .net Interoperabilität für Excel installiert ist
- 6. Wie installiert man Compass unter Windows
- 7. Wie überprüft man, ob ein Programm .NET verwendet?
- 8. Wie installiert man Ant-Contrib unter Windows?
- 9. Wie installiert man PyBluez unter Windows 8.1?
- 10. Wie installiert man Hbase unter Windows 7
- 11. Wie überprüft man, ob ein bestimmter Webbrowser auf dem System installiert ist?
- 12. Wie überprüft man, ob ein Registrierungsschlüssel existiert
- 13. Wie überprüft man, ob ein Array leer ist?
- 14. Überprüfen, ob ein Port unter FreeBSD installiert ist
- 15. Wie überprüft man, ob ein Zeiger gültig ist?
- 16. Wie überprüft man, ob ein funktionsähnliches Makro definiert ist?
- 17. Wie überprüft man, ob ein Zeichen ein Apostroph ist?
- 18. Wie überprüft man, ob ein Java-Zeichen ein Währungssymbol ist
- 19. C - Wie überprüft man, ob ein Prozess ein Systemprozess ist?
- 20. Wie überprüft man, ob ein Wort ein Palindrom ist?
- 21. Wie programmiere ich ein Programm unter Windows?
- 22. Wie überprüft man, ob ein Java-Programm ein Handle für eine Datei geöffnet hält?
- 23. Wie überprüft man, ob jemand ein Pfadverzeichnis unter Windows oder Mac eingibt?
- 24. Wie installiert man ältere Version von node.js unter Windows?
- 25. Erkennen, ob ein Programm bereits mit NSIS installiert ist
- 26. Wie überprüft man, ob ein Objekt serialisierbar ist in C#
- 27. Wie überprüft man, ob ein JTextField leer ist?
- 28. Wie überprüft man, ob localhost
- 29. wie überprüft man, ob BLAS und ATLAS bereits installiert sind
- 30. Wie überprüft man, ob ContentPlaceHolder leer ist?
+1 für jRegistryKey Einführung Dank – stacker