-
Windows Registry Zugriff
Hallo Zusammen
ich hoffe ihr könnt mir helfen. Ich verwende das Paket COM.ICE.JNI.REGISTRY um mit Java auf die Windows Registry zuzugreifen. Soweit klappt das auch alles. Nun will ich jedoch in der Registry einen Wert vom Typ REG_DWORD ändern. Wenn Sie vom REG_SZ sind kann ich sie ganz einfach wie einen String behandeln. Bei REG_DWORD stehe ich jetzt ein wenig auf dem Schlauch. Ich möchte als Beispiel den Wert von 0x00000001 auf 0x00000000 ändern.
Beispiel für String:
Code:
RegistryKey software = schluessel.openSubKey("Software\\Star Downloader");
RegistryKey meiner = software.createSubKey(schluesselName, null);
RegStringValue wert = new RegStringValue(meiner, "FTPProxyPort", jTextField2.getText())
Soweit bin ich bis jetzt beim "Binary D_WORD".
Code:
RegistryValue wert4 = new RegBinaryValue(meiner, "UseFTPProxy", ?????????????????? );
Code:
byte [] nett = new String("?????????????????? ").getBytes();
RegistryValue wert4 = new RegBinaryValue(meiner, "UseFTPProxy", nett);
Nun weiss ich jedoch nicht weiter. Kennt sich einer von euch eventuell damit aus und kann mir helfen ?
LG Anja
-
Ich kenn mich damit nicht aus - aber zu helfen versuchen kann ich ja mal:
Was funktioniert genau nicht:
- Programm macht nicht, was es soll
- Kompilieren geht nicht
Vielleicht so etwas:
byte[] bytes = new byte[8];
byte[0]=0;
byte[1]=0;...
MfG Bischi
-
Danke für deine Antwort
der Zugriff funktioniert. Die daten werden in die Registry geschrieben, jedoch stimmt der Typ nicht.
als Beispiel:
Soll:
FTPProxyEnable 0x00000000(0) (HEX)
Ist:
FTPProxyEnable 0
Sowie es bei "Soll" beschrieben steht, soll es in der REgistry stehen. Das Programm schreibt es wie in "Ist" gezeigt, leider keinen HEX-Code hin, sondern konvertiert es wenn ich es als String(0) angebe, den Typ von REG_DWORD auf REG_SZ bzw. wenn ich es als Binary übergebe, versucht er es zwar zu speichern, aber als HEX schreibt er es dennoch nicht hin.
LG
-
Und wenn dus gar nicht erst als String eingibst? Bzw: Gib mal das Byte-Array auf der Kommandozeile aus - dann siehst du, wo der Fehler passiert.
MfG Bischi
-
Er gibt mir ja keinen Fehler. Wenn ich den Wert setze, passt er die Registry einfach in den passenden Typ der Eingabe um. Wenn ich den Wert auslese bekomme ich in der Komandozeile in der Ausgabe nur ein Kästchen.
-
Was ist, wenn du ein byte[] Array mit zwei Elementen (also die Länge von DWORD) nimmst, und beide Element 0 setzt?
Edit: bzw setDWordCommand?
Ciao,
_
-
So danke für eure Antworten hab nen Lösungsweg gefunden.
Es lag daran dass Java Big endian benutzt und windows litte endian. das muss man dann nur konvertieren. bei mir läuft es so:
Code:
RegistryValue wert4 = new RegDWordValue(meiner, "UseFTPProxy", RegDWordValue.REG_DWORD_LITTLE_ENDIAN, 1 );
lg anja