Announcement

Collapse
No announcement yet.

Windows Registry ändern mit JNI oder dem Microsoft SDK

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Windows Registry ändern mit JNI oder dem Microsoft SDK

    Hallöchen,

    ich bin noch ein Java-Anfänger und habe ein ganz großes Problem damit Einträge in der Windows NT Registry zu Ändern. Für den Zugriff auf die Registry verwende ich zur Zeit das Java Native Interface und das Package com.ice.jni.registry.*. Leider kann ich irgendwie gar nichts bewegen. Wenn ich den folgenden Code versuche zu Compilieren, meckert er schon.
    RegistryKey regKey;
    regKey = Registry.HKEY_CURRENT_USER;
    int i = regKey.getNumberSubkeys(); // Hier wird gemeckert.
    Fehlt mir vielleicht irgendwas? Hat irgendjemand ein Beispiel für mich?

    Die zweite möglichkeit wäre das Ganze über das Microsoft SDK zu realisieren. Aber auch dort stoße ich auf Probleme. Wenn ich den folgenden Code ausführe erscheint die unten stehende Meldung:

    import com.ms.wfc.app.*;

    java.lang.UnsatisfiedLinkError: RegQueryInfoKey

    Fehlt mir da vielleicht auch was? Ich hatte auch ein paar Probleme das SDK einzubinden. Wenn dort jemand praktische Erfahrung hat, wäre es schön, wenn ich eine Art Anleitung bekommen könnte.

    Danke
    Nadine

  • #2
    hallo nadine,

    vielleicht hilft dir dieser beispielcode den ich in einer eigenen klasse einsetze. das beispiel ist auf zeichenketten ausglegt. um andere datentypen zu speichern müsste er noch erweitert werden.

    <PRE>
    package lib.winapi;

    import com.ms.wfc.app.*;

    // =================
    // = =
    // = MRegistry =
    // = =
    // =================
    /**
    */
    public class MRegistry
    {
    // =============
    // = Variablen =
    // =============
    protected static RegistryKey key;

    // ==============
    // = Funktionen =
    // ==============

    // ========================
    // = initKey_CURRENT_USER =
    // ========================
    public static void initKey_CURRENT_USER(String aKeyDir)
    {
    key=Registry.CURRENT_USER.createSubKey(aKeyDir);
    };

    // =========================
    // = initKey_LOCAL_MACHINE =
    // =========================
    public static void initKey_LOCAL_MACHINE(String aKeyDir)
    {
    key=Registry.LOCAL_MACHINE.createSubKey(aKeyDir);
    }

    // =============
    // = getKeyStr =
    // =============
    public static String getKeyStr(String aKeyName)
    {
    return (String)key.getValue(aKeyName);
    };

    }
    </PRE>

    mfg Oliver Bergthale

    Comment


    • #3
      Danke Oliver!

      Leider habe ich es nicht geschafft das Microsoft SDK vernünftig zum Laufen zu bringen. Ich habe es aber jetzt über JNI gelöst und das funktioniert wirklich gut. Für alle die ein ähnliches Problem haben:
      Hier ein kurzes Beispiel zum Schreiben von String-Werten in die Registry.

      import com.ice.jni.registry.*;

      Registry _reg = new Registry();

      RegistryKey regKey = _reg.openSubkey(Registry.HKEY_LOCAL_MACHINE,"Softw are\\Oracle", RegistryKey.ACCESS_WRITE);

      RegStringValue regVal = new RegStringValue(regKey, "Forms60_PATH");

      regVal.setData("D:\");

      regKey.setValue(regVal);

      regKey.closeKey();

      Gruss
      Nadin

      Comment

      Working...
      X