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();
# .....
}
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