# Registry - Eintrag



## Kaladial (3. Jun 2008)

hi

ich möchte sowas wie ne registrierung in mein programm einbauen.
dazu möchte ich das mein programm beim start überprüft: ist in der regisrty ein bestimmter eintrag gesetzt

wenn ja: programm soll starten
wenn nein:  soll ne abfrage (ala reg key eingeben) kommen und wenn der richtig ist, soll ein eintrag, auf dem das programm beim programmstart überprüft, eingetragen werden...

hab im mom nich so die richtige idee wo ich da überhaupt anfangen soll da ich sowas noch nie gemacht hab... 
kann mir da pls einer helfen?

thx Kala


----------



## The_S (3. Jun 2008)

Zum Einen wird sowas dann Plattformabhängig, da nur Windows ne Registry hat und zum Andern kannst du die Forensuche verwenden, da gibts nen sehr guten Thread von thE_29 zu  .


----------



## Kaladial (3. Jun 2008)

plattformabhängig is mein programm eh schon also das stört mich net... 

hmmm link wäre netter gewesen ... naja ich guck ma ob ich was finde


----------



## The_S (3. Jun 2008)

Kaladial hat gesagt.:
			
		

> hmmm link wäre netter gewesen ... naja ich guck ma ob ich was finde



Sind wir heute wieder bei "Wünsch dir was" und "Kann das nicht jemand anderes machen"? Ich hab dir gesagt nach was (Registry) und von wem (thE_29) du suchen musst. Damit fütterst du die foreneigene Suche, und der *ERSTE* Treffer bringt dich zum Ziel :roll:

http://www.java-forum.org/de/viewtopic.php?t=40492&highlight=registry


----------



## thE_29 (3. Jun 2008)

Jo, ich poste mal gleich die Links dazu:
http://www.java-forum.org/de/topic40492_registry-auslesen.html

http://sourceforge.net/projects/java-registry/

Goil, ich hab auf dem 92% activity 

Und maybe kann ja mal wer donaten.. Hab bis jetzt nix gekriegt ((


Oho! Mir hat jemand nen Bug submitted


----------



## Kaladial (3. Jun 2008)

the_29: jo hatte ich per foren suche gefunden *ggg*

aber irgendwie fehlen mir die beispielen um zu verstehn was ich wie machen muss 

also rein theoretisch:

ich will folgende 3 aktionen machen:

1.) suche in HKEY_CURRENT_USER\\Software\\AVS3
den wert "regKey"

^^ also will wissen gibt es den unterordner AVS3 und gibt es den wert regKey und wie ist dieser wert?

2.) erstelle den ordner AVS3 und den wert regKey mit dem wert 0

3.) Update den wert regKey und setzte den wert auf 1

wie genau müsste dann mein programm aussehn? 
weil is mir jetzt irgendwie nen rätsel 

mfg Kala


----------



## Kaladial (3. Jun 2008)

```
try{
						Regor reg = new Regor(); 
			            int key = reg.createKey(reg.HKEY_CURRENT_USER, "Software\\AVS3"); 
			            reg.closeKey(key);
			            key = reg.openKey(reg.HKEY_CURRENT_USER, "Software\\AVS3");
			            reg.setValue(key, "regKey", "1"); 
			            reg.closeKey(key);
					}catch(Exception ex){}
```

also soweit bin ich ja schon 
also ich kann nen verzeichnis anlegen und nen wert anlegen
aber wie kann ich abfragen ob der wert bzw das verzeichnis überhaupt existiert?


----------



## Kaladial (3. Jun 2008)

ok hab nun auch herraus gefunden das wenn ein verzeichnis nicht da ist und ich es öffnen will der wert key = -1 ist


```
key = reg.openKey(reg.HKEY_CURRENT_USER, "Software\\AVS3");
```

^^ wenn verzeichnis nicht da ist dann key = -1

aber ich hab noch nicht herrausbekommen wie ich den wert abfrage bzw gucke ob der überhaupt da ist ...


----------



## thE_29 (3. Jun 2008)

Das Verzeichnis kannst du dir mit listKeys zurückgeben lassen!

Und willst du WÖRTER auslesen oder was anderes?!

Werde mal ein bißchen was umbauen (Version 3.0) um auch Zahlenwerte via dirty runtime auszulesen!


----------



## Kaladial (3. Jun 2008)

```
try{
						Regor reg = new Regor(); 
			            int key = reg.createKey(reg.HKEY_CURRENT_USER, "Software\\AVS3"); 
			            reg.closeKey(key);
			            key = reg.openKey(reg.HKEY_CURRENT_USER, "Software\\AVS4");
			            System.out.println(key);
			            key = reg.openKey(reg.HKEY_CURRENT_USER, "Software\\AVS3");
			            System.out.println(key);
			            reg.setValue(key, "regKey", "3"); 
			            System.out.println(reg.listKeys(key));
			            reg.closeKey(key);
					}catch(Exception ex){}
```

hatte ich jetzt gedacht aber als ausgabe bekomm ich:

-1 
17400
null  <-- wieso null???
in dem verzeichnis avs3 gibt es doch den key = "regKey" der den wert 3 hat... wieso bekomme ich ein null zurück??

will eigentlich nur zahlen auslesen


----------



## thE_29 (3. Jun 2008)

Weil das ein DWORD Eintrag ist und keine ZEICHENFOLGE!

Wie ich auch oben geschrieben habe  (und auch als Bug in sourceforge submitted wurde)

Ich baue es zZ auf Version 3 um, wo ich DWORD Einträge via Runtime und regedit /e rauslesen will!

Das ganze ist nie ziemliche blöde rumparserei, also wirds noch ein bißchen dauern.


----------



## Kaladial (3. Jun 2008)

naja aber wenn ich wer reg.setValue(key, "regKey", "3"); den wert rein schreibe steht doch in in dem key nen richtiger wert drin 

is mir doch gleich ob das nen dword oder wie jetzt nen reg_sz ist

mir reicht doch der reg_sz 
ich will den nur auslesen ...


----------



## Kaladial (3. Jun 2008)

^^ is doch vollkommen ausreichend nur wie les ich den wert aus?


----------



## Gast (3. Jun 2008)

ach leute, warum diesen umständlichen weg gehen? schreibs einfach in ne textdatei dann haste auch plattformunabhängigkeit und musst nicht son driss da machen.


----------



## thE_29 (3. Jun 2008)

listKeys listet dir die SCHLÜSSEL aus 

Du brauchst listValueNames


```
System.out.println(reg._listValueNames(key));
      System.out.println(">> " + Regor.parseValue(reg._readValue(key, "regKey")));
```

Du brauchst listValueNames und readValue (die _ sind in der Version 3 dann umbenannte, da die int Werte nicht mehr reichen!)


----------



## Kaladial (3. Jun 2008)

so thx mir der letzten aussage ist mein problem erschlagen  

also für mich reicht das so thx


----------



## thE_29 (3. Jun 2008)

So!

DWORD, BINARY, MULTI und EXPAND kann man jetzt auch schon auslesen 

Es ist zwar ein Wrapping über Runtime und regedit /e, aber was solls! Da es ein paar Leute brauchen, werde ich woll auch noch die set Methode brauchen


----------



## thE_29 (4. Jun 2008)

Nachtrag: So die neue Version gitbs vorab mal hier im Board zum Testen: http://www.java-forum.org/de/viewtopic.php?p=419749#419749


----------



## Kaladial (4. Jun 2008)

jo geht ebenfals  

mich hat zwar das closeKey grad n bissel geärgert aber als ich rausgefunden hab das man nur noch keys schliessen kann die auch wirklich offen sind war das problem auch gelöst


----------



## thE_29 (4. Jun 2008)

Welches OS hast du den? 

Und hast du auch probiert ein DWORD, BINARY, MULTI oder EXPAND zu schreiben?


So, da hier im Forum zu wenig für Tests los ist, habe ich es mal in sourceforge auch raufgeladen 

Hoffentlich gibts keine Fehler und falls es welche gibt, hoffe ich das sie mir die Fehler schicken!


----------



## Kaladial (5. Jun 2008)

hmmm um ehrlich zu sein hab ich das net ausprobiert weil ich es net brauchte ... aber wenn du mir verrätst wie ich nen dword z.b. schreibe dann probier ich das gerne aus ...


----------



## thE_29 (5. Jun 2008)

Naja, du öffnest es mit der neuen Key Klasse und dann sagst du zB readDword(Key, NAME)

Such dir halt nen DWORD Eintrag in der Registry und probiers! Kannst auch saveDword(Key, NAME, HEXWERT) sagen!


----------



## Kaladial (5. Jun 2008)

jo also dword reinschreiben und auslesen geht... 
allerdings sollte villeicht noch irgendwo stehn das dword maximal ffffffff annehmen kann bzw wenns drüber is sollte ne meldung kommen


----------



## thE_29 (5. Jun 2008)

Oho!
Jo, das fehlt noch eindeutig


----------

