diff --git a/src/modules/Java/jvm.c b/src/modules/Java/jvm.c
index f878ce2b76a3bcbae188446c44ba718f4e43a4b8..b055039cc253ef5c2670fd8bb028af1e300d85e8 100644
--- a/src/modules/Java/jvm.c
+++ b/src/modules/Java/jvm.c
@@ -1,5 +1,5 @@
 /*
- * $Id: jvm.c,v 1.4 1999/06/11 20:26:15 marcus Exp $
+ * $Id: jvm.c,v 1.5 1999/06/11 21:03:19 marcus Exp $
  *
  * Pike interface to Java Virtual Machine
  *
@@ -16,7 +16,7 @@
 #endif /* HAVE_CONFIG_H */
 
 #include "global.h"
-RCSID("$Id: jvm.c,v 1.4 1999/06/11 20:26:15 marcus Exp $");
+RCSID("$Id: jvm.c,v 1.5 1999/06/11 21:03:19 marcus Exp $");
 #include "program.h"
 #include "interpret.h"
 #include "stralloc.h"
@@ -2707,16 +2707,44 @@ void pike_module_init(void)
   prog.subtype = 0;
 
 #ifdef __NT__
-  if((jvmdll=LoadLibrary("jvm"))==NULL)
-    return;
-  else {
-    FARPROC proc;
-    if(proc=GetProcAddress(jvmdll, "JNI_CreateJavaVM"))
-      JNI_CreateJavaVM = (createjavavmtype)proc;
-    else {
-      if(FreeLibrary(jvmdll))
-	jvmdll = NULL;
+  {
+    char *libname="jvm";
+    LPCSTR keyname=(LPCSTR)"SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.2";
+    HKEY key;
+    char buffer[2*MAX_PATH+32];
+    DWORD type, len = sizeof(buffer)-1;
+
+    if(RegOpenKeyEx(HKEY_CURRENT_USER, keyname, 0,
+		    KEY_READ, &key) == ERROR_SUCCESS ||
+       RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyname, 0,
+		    KEY_READ, &key) == ERROR_SUCCESS) {
+      if(ERROR_SUCCESS == RegQueryValueEx(key, "RuntimeLib", 0, &type,
+					  buffer, &len))
+	switch(type) {
+	case REG_SZ:
+	  libname = buffer;
+	  break;
+	case REG_EXPAND_SZ:
+	  type = ExpandEnvironmentStrings((LPCTSTR)buffer,
+					  buffer+len,
+					  sizeof(buffer)-len-1);
+	  if(type && type<=sizeof(buffer)-len-1)
+	    libname = buffer+len;
+	  break;
+	}
+      RegCloseKey(key);
+    }
+    if((jvmdll=LoadLibrary(libname))==NULL)
       return;
+    else {
+      FARPROC proc;
+      if(proc=GetProcAddress(jvmdll, "JNI_CreateJavaVM"))
+	JNI_CreateJavaVM = (createjavavmtype)proc;
+      else {
+	if(FreeLibrary(jvmdll))
+	  jvmdll = NULL;
+	return;
+      }
     }
   }
 #endif /* __NT__ */