Avatar billede gudmundseth Nybegynder
16. august 2002 - 10:20 Der er 6 kommentarer

adgang til windows registry fra java

Hvordan får jeg adgang til at læse og skrive i en REG_DWORD variabel i windows registreringsdatabase? Jeg benytter jdk1.3.1 og har ikke muglighed for at benytte jdk1.4.
Avatar billede disky Nybegynder
16. august 2002 - 11:05 #1
Det er ret nemt, det kan du ikke.

Eller helt korrekt det kan du ikke direkte, java er platformsuafhængigt, og rører ikke ved properitære ting som reg. databasen.

Men du kan skrive et C++ program der kan gøre det, og så via JNA (Java Native Interface) snakke med C++ programmet.
Avatar billede droida38 Nybegynder
19. august 2002 - 10:27 #2
Du kan gøre det hvis du bruger Microsoft jvm. Men deres SDK er ikke opdateret siden jdk1.1.4 :(

  /**
  * Locate value in registry LOCAL_MACHINE
  * @param subkey folder of key to find i.e. "Applications\\mspaint.exe\\shell\\print\\command"
  * @param key For default value deliver ""
  */
  private static String getRegistry_LOCAL_MACHINE_Value(String subkey, String key) {
    String value = null;

    if (isMicrosoftJVM()) {
      com.ms.wfc.app.RegistryKey regKey;
      regKey = com.ms.wfc.app.Registry.LOCAL_MACHINE.getSubKey(key);
   
      if (regKey != null) {
        value = (String) regKey.getValue(key);
      }
    }
    return value;
  }

  /**
  * @return Running in a Microsoft JVM ?
  */
  public static boolean isMicrosoftJVM() {
    String vendor = System.getProperty("java.vendor").toLowerCase();
    return (vendor != null && vendor.indexOf("microsoft") != 0);
  }
Avatar billede disky Nybegynder
19. august 2002 - 10:31 #3
At bruge Microsoft's JVM ville være MEGET dumt.

Microsoft's JVM overholder IKKE standarden, og derfor er der ingen garanti for at dine programmer virker andre steder osv.
Avatar billede dsj Nybegynder
20. august 2002 - 15:20 #4
Så vidt jeg ved, kan Microsoft's JVM f.eks. ikke forstå SWING. Lidt uheldigt, når det er den fortrukne måde at lave GUI på i Java i dag.
Avatar billede droida38 Nybegynder
20. august 2002 - 16:30 #5
Disky : Ret dårligt argument for ikke at bruge MS, eftersom du selv forslår at lave noget native C++ ???! Og da registeringsdatabasen kun findes på Windows, så.....

Men jeg er alligevel enig i at der skal være RET tungtvejene årsager for at benytte MS JVM og dermed 1.1.4 (kunne f.eks. være at det er installeret på hovedparten af alle Windows-klienter)
Avatar billede disky Nybegynder
22. januar 2003 - 08:06 #6
Tro mig det er ikke et dårligt argument tværtimod.

Alle der kender til Java ved at Microsoftes JVM, er totalt fyldt af fejl.

Som profesionel Java udvikler anvender man kun en af SUN godkendt JVM, som er up2date ! Og ikke en æld gammel, buggy, version.

Derfror er det godt at Microsoft har fået pålagt at indføre en ordentlig JVM i deres OS.

gudmundseth:
Hvorfor afviste du mit svar ? JNI er den korrekte måde at gøre det på, hvis man endelig vil lave noget properitært kode, hvilket jeg fraråder.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester