in der Registry browsen
-
Ich möchte das JavaHome Verzeichnis über die Registrierung auslesen.
Probleme:
Im obersten Schlüssel befindet sich die Version. Die Version sagt was über die Unterverzeichnisse aus. Wenn mehrere Java Versionen vorhanden sind, wird trotzdem nur eine in dem obersten Schlüssel geschrieben. Wie bekomme ich nun die Versionen raus? Im jeweiligen Schlüssel ( Name = Versionsnummer) gibt es dann einen Eintrag JavaHome.
Folgendes hatte ich gedacht
//Auslesen der JavaVersion CRegKey javaversionkey; CString javaversion; DWORD dwCount0 = sizeof(javaversion); javaversionkey.Open( HKEY_LOCAL_MACHINE, "SOFTWARE\\JavaSoft\\Java Runtime Environment\\", KEY_READ); javaversionkey.QueryValue( javaversion.GetBuffer(255), "CurrentVersion", &dwCount0); javaversionkey.Close(); javaversion.ReleaseBuffer(-1); javaversion = "SOFTWARE\\JavaSoft\\Java Runtime Environment\\" + javaversion + "\\"; // CString in char* printf("%s %s\n", (LPCTSTR)javaversion, javaversion.GetBuffer(255)); //Java Pfad auslesen CRegKey javakey; CString javahome; DWORD dwCount1 = sizeof(javahome); javakey.Open( HKEY_LOCAL_MACHINE, javaversion, KEY_READ); javakey.QueryValue( javahome.GetBuffer(255), "JavaHome", &dwCount1); javakey.Close(); javahome.ReleaseBuffer(-1); javahome = javahome + "\\bin\\javaw.exe"; MessageBox(javahome);
funktioniert aber leider nicht. Vermute das was nicht mit der Variable javaversion im javakey.Open stimmt.
Wie könnte ich alle auslesen?
-
// CString in char*
printf("%s %s\n", (LPCTSTR)javaversion, javaversion.GetBuffer(255));
-
ja habe ich gemerkt. Aber das Problem scheint folgendes zu sein. Er gibt mir keinen String zurück. Nummerische Werte funktionieren, die liest er. Aber bei Strings kommt der Fehler 234 zurück.
-
Probiers mal so:
DWORD dwCount1 = 255; javakey.Open( HKEY_LOCAL_MACHINE, javaversion, KEY_READ); javakey.QueryValue( javahome.GetBuffer(dwCount1), "JavaHome", &dwCount1); javakey.Close(); javahome.ReleaseBuffer(-1);
-
Tausend Dank. Hat funktioniert!!!!!!
Echt Super