Robert: Registry-Zugriff per Java möglich?

Hallöle,

Gibt es eine Möglichkeit (sprich: eine Klasse), mit Java auf die Windows-Registry zuzugreifen?
(ja, mir ist der Unterschied zwischen Java und Javascript bekannt, es handelt sich wirklich um echtes Java, nicht um Javascript)

Mir ist schon klar, daß das irgendwie dem Prinzip der Systemunabhängigkeit von Java zuwiderläuft, mein Progrämmchen muß aber nur unter Windows funktionieren, ist auch schon recht weit ausgebaut, und jetzt soll als neues Feature dazukommen, daß es sich gewisse Daten von einem anderen Programm holt.
Dieses andere Programm ist extern zugekauft und es hinterlegt die gesuchten Daten in der Registry (was wir leider nicht beeinflussen können).

Danke im Voraus,

cu,
Robert

  1. Hallo.

    Die Bedenken gegenüber deiner Forderung hast du ja schon richtig
    erkannt. Außerdem würde es noch dem Sicherheitskonzept zuwiderlaufen,
    da Java ja in einer virtuellen Maschine läuft, die gar keine Registry
    kennen kann.

    Folglich wirst du auf ein externes Programm zurückgreifen müssen,
    dass diese Arbeit erledigt.

    Gruß
    L00NIX

    1. Hallöle,

      Die Bedenken gegenüber deiner Forderung hast du ja schon richtig
      erkannt. Außerdem würde es noch dem Sicherheitskonzept zuwiderlaufen,
      da Java ja in einer virtuellen Maschine läuft, die gar keine Registry
      kennen kann.

      Ah ja. Darum klappt das Lesen/Schreiben der Registry mit java.util.prefs.Preferences ;-)

      (leider ist damit nur auf den Teilbereich unter HKEY_CURRENT_USER\Software\JavaSoft\Prefs möglich)

      cu,
      Robert

  2. Du kannst das auch in Java erledigen, ich glaube manche verwechseln das mit dem Sandbox-Modell der Applets. Mittels JINDI kannst Du Windows-Befehle absetzten. Einer davon heisst "RegSetValueEx" und bietet Dir den vollen Zugriff auf die Windows-Registry. Alternativ geht es auch mit dem JDirect-Generator von Microsofts J++.

    Gruss, Alex

    Hallöle,

    Gibt es eine Möglichkeit (sprich: eine Klasse), mit Java auf die Windows-Registry zuzugreifen?
    (ja, mir ist der Unterschied zwischen Java und Javascript bekannt, es handelt sich wirklich um echtes Java, nicht um Javascript)

    Mir ist schon klar, daß das irgendwie dem Prinzip der Systemunabhängigkeit von Java zuwiderläuft, mein Progrämmchen muß aber nur unter Windows funktionieren, ist auch schon recht weit ausgebaut, und jetzt soll als neues Feature dazukommen, daß es sich gewisse Daten von einem anderen Programm holt.
    Dieses andere Programm ist extern zugekauft und es hinterlegt die gesuchten Daten in der Registry (was wir leider nicht beeinflussen können).

    Danke im Voraus,

    cu,
    Robert

    1. Hallöle,

      Du kannst das auch in Java erledigen, ich glaube manche verwechseln das mit dem Sandbox-Modell der Applets. Mittels JINDI kannst Du Windows-Befehle absetzten.

      Hm. Dazu finde ich auf java.sun.com gar nichts.
      Und bei Google gibt es zu JINDI (auch kombiniert mit Java und/oder Registry) nur chinesische Seiten.

      Einer davon heisst "RegSetValueEx"

      Kombiniere ich JINDI mit RegSetValueEx, krieg ich gar keine Treffer.
      Ohne das JINDI viele Treffer zu .NET, ASP, usw., aber nichts zu Java.

      und bietet Dir den vollen Zugriff auf die Windows-Registry.

      Wenn ich denn (nichtchinesische) Informationen zu JINDI finde ...

      Alternativ geht es auch mit dem JDirect-Generator von Microsofts J++.

      Nene, es geht um richtiges Java, nicht um J++.

      cu,
      Robert

      1. tschuldigung,

        mir ist da ein i zuviel reingerutscht, suche mal unter
        "java jndi" (mit den Anführungszeichen!), und dann unter regsetvalueex ohne alles, dann müsstest Du alle Informationen bekommen!

        Gruß Alex

        Hallöle,

        Du kannst das auch in Java erledigen, ich glaube manche verwechseln das mit dem Sandbox-Modell der Applets. Mittels JINDI kannst Du Windows-Befehle absetzten.

        Hm. Dazu finde ich auf java.sun.com gar nichts.
        Und bei Google gibt es zu JINDI (auch kombiniert mit Java und/oder Registry) nur chinesische Seiten.

        Einer davon heisst "RegSetValueEx"

        Kombiniere ich JINDI mit RegSetValueEx, krieg ich gar keine Treffer.
        Ohne das JINDI viele Treffer zu .NET, ASP, usw., aber nichts zu Java.

        und bietet Dir den vollen Zugriff auf die Windows-Registry.

        Wenn ich denn (nichtchinesische) Informationen zu JINDI finde ...

        Alternativ geht es auch mit dem JDirect-Generator von Microsofts J++.

        Nene, es geht um richtiges Java, nicht um J++.

        cu,
        Robert

        1. tschuldigung,

          mir ist da ein i zuviel reingerutscht, suche mal unter
          "java jndi" (mit den Anführungszeichen!), und dann unter regsetvalueex ohne alles, dann müsstest Du alle Informationen bekommen!

          hmm, eine Methode mit diesem Namen existiert in JNDI nicht (jedenfalls nicht im alphabetischen Index der API Doku, und da würde sie drinstehen).
          Aber als "Java Naming and Directory Interface" ist es auch nicht die Aufgabe des Pakets, direkten Zugriff auf die Registry zu ermöglichen...

          Allerdings scheint regsetvalueex der Name der nativen WIN32 API Funktion zu sein - sicher dass du das nicht verwechselst (mit JNI aus Java aufgerufen)?

          Dominik

          1. Diminik,

            ja, ich meinte serbstverständlich das Java Native Interface JNI !

            tschuldigung,

            mir ist da ein i zuviel reingerutscht, suche mal unter
            "java jndi" (mit den Anführungszeichen!), und dann unter regsetvalueex ohne alles, dann müsstest Du alle Informationen bekommen!

            hmm, eine Methode mit diesem Namen existiert in JNDI nicht (jedenfalls nicht im alphabetischen Index der API Doku, und da würde sie drinstehen).
            Aber als "Java Naming and Directory Interface" ist es auch nicht die Aufgabe des Pakets, direkten Zugriff auf die Registry zu ermöglichen...

            Allerdings scheint regsetvalueex der Name der nativen WIN32 API Funktion zu sein - sicher dass du das nicht verwechselst (mit JNI aus Java aufgerufen)?

            Dominik

        2. Hallöle,

          tschuldigung,
          mir ist da ein i zuviel reingerutscht, suche mal unter
          "java jndi" (mit den Anführungszeichen!), und dann unter regsetvalueex ohne alles, dann müsstest Du alle Informationen bekommen!

          AH, da kommt schon eher passendes!

          Zur Windows Registry hab ich da bis jetzt aber nur was von Cogent gefunden, und die wollen fast 200 USD dafür.

          cu,
          Robert

  3. Hallöle,

    Gibt es eine Möglichkeit (sprich: eine Klasse), mit Java auf die Windows-Registry zuzugreifen?

    hmm, von diesem JINDI, welches alexander erwähnte habe ich noch nie was gehört (und auch jetzt nichts dazu gefunden...)

    Aber das mit der Registry wird sicherlich mit normalen WIN32 Funktionen und JNI (Java Native Interface) funktionieren - die entsprechenden Methoden müssen dann in C/C++ geschrieben und aus Java heraus aufgerufen werden. Man kann das sogar "Plattformunabhängig" machen; auf anderen Systemen als Windows kann die Anwendung die selben Infos ja stattdessen aus einer Config-datei statt aus der Registry laden.

    Dominik