QSettings, Java und Microsoft

Alles rund um die Programmierung mit Qt
Antworten
Laubi
Beiträge: 8
Registriert: 23. Mai 2011 21:46

QSettings, Java und Microsoft

Beitrag von Laubi »

Hallo erstmals,

ich bin derzeit an einem Projekt dran, und bin nun auf ein Problem gestoßen, bei dem ich einfach keine Lösung gefunden habe.

Das Problem ist, ich muss den Java-Homepfad unter Windows auslesen.
Das Problem war eigentlich schnell gelöst, dachte ich, weil der JavaHomePfad in der Regestry abgespeichert ist, hier der Codesnippet:

Code: Alles auswählen

QString EnderTecApp::getJavaHome() const{
#ifdef Q_OS_WIN32
	const QString JRE_Regpath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment";
	const QString currentJavaVersion = QSettings(JRE_Regpath, QSettings::NativeFormat).value("CurrentVersion").toString();
	return QSettings(QString("%1\\%2").arg(JRE_Regpath, currentJavaVersion), QSettings::NativeFormat).value("JavaHome").toString();
# .....
}
Zuerst wird die derzeitige JavaVersion ausgelesen, um dann in den richtigen Unterordner zu gehen und den Schlüssel "JavaHome" auszulesen.

Das alles funktioniert gut und schön mit Java 6, aber wie das Leben so ist, nicht mit Java 7.

Der Grund ist, das man von Microsoft aus, von "HKEY_LOCAL_MACHINE/SOFTWARE" auf "HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432node" mit einer 64-bit Anwendung weitergeleitet wird.
Hier steht auch der Grund: http://support.microsoft.com/kb/896459


Java 6 legt hier noch einen Schlüssel zum Homepfad an, Java 7 leider nur noch unter "HKEY_LOCAL_MACHINE/SOFTWARE", auf das ich nicht ohne WINAPI zugreifen kann.


Hier bin ich nun, mit Java 7, einem Windows 64-bit Betriebssystem und einem Problem, das ich anscheinend nur mit der WINAPI lösen kann und genau das will ich umgehen.

Gibt es eine Möglichkeit, den JavaHomepfad herauszufinden? Wenn ja wie?

Ich hab ehrlich keine Lust mit der WINAPI rumzugurken, weil ich davon einfach keine Ahnung habe.

Danke im Vorraus,
Laubi
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QSettings, Java und Microsoft

Beitrag von franzf »

Nen QProcess starten mit java -XshowSettings und die Ausgabe nach java.home filtern.
Laubi
Beiträge: 8
Registriert: 23. Mai 2011 21:46

Re: QSettings, Java und Microsoft

Beitrag von Laubi »

franzf hat geschrieben:Nen QProcess starten mit java -XshowSettings und die Ausgabe nach java.home filtern.
Genau das hab ich schon gesucht, aber nicht gefunden.
Der Befehl ist leider erst ab Java7 verfügbar wenn ich richtig gelesen habe, aber das sollte kein Problem sein, da bei Java6 noch keine Probleme beim auslesen der Regestry besteht.

Vielen dank noch, das Problem ist dadurch gelöst.
Antworten