Page 1 of 1

ReplaceRegValue und REG_DWORD

Posted: 18. Nov 2009, 13:24
by Lurchi
Hallo Forum, ich versuche mich gerade an einem Paket für eDrawings 2010 bei dem ich in der Registry einen (REG_DWORD) Wert von 0 auf 1 setzen möchte, damit das nervige "Wollen sie sich jetzt registrieren ?" Fenster beim Programm Start nicht mehr kommt.
Meine Zeile

ReplaceRegValue (HKCU,SOFTWARE\eDrawings\e2010\General\, "Activated", "0x00000000", "0x00000001", 0)

wandelt den REG_DWORD in einen REG_SZ um, was zu einem Fehler führt.

Weiß jemand Rat ?

Posted: 18. Nov 2009, 15:13
by Olaf Meuther
Ich würde es mal damit versuchen: ;)

ReplaceRegValue (HKCU,SOFTWARE\eDrawings\e2010\General\, "Activated", 0x00000000, 0x00000001, 0)

Posted: 18. Nov 2009, 16:14
by Julia
Hallo,
"0x00000000" ist der Flag für REG_SZ, für REG_DWORD mußt du aber stattdessen "0x00010001" verwenden.

Posted: 19. Nov 2009, 08:25
by Lurchi
Julia, du meinst die Zeile muss dann so lauten:

ReplaceRegValue (HKCU,SOFTWARE\eDrawings\e2010\General\, "Activated", "0x00010000", "0x00010001", 0)

Uli

Posted: 19. Nov 2009, 08:29
by Olaf Meuther
Ja, das meint sie.

Allerdings müssen die Werte übergeben werden und nicht die Formate.
Also bleibe ich dabei

ReplaceRegValue (HKCU,SOFTWARE\eDrawings\e2010\General\, "Activated", 0x00000000, 0x00000001, 0)

Posted: 19. Nov 2009, 08:55
by Julia
Laut der Hilfe-Datei, sollte das so aussehen:
ReplaceRegValue (<Wurzel>, "<Schluessel>", "<Wert>", "<Suchzeichenfolge>", "<Ersatzzeichenfolge>", <Zahl>)

Ersetzt im <Wert> des Registrierungsschlüssels, der durch <Wurzel> und <Schl> angegeben ist, den Wert <Suchzeichenfolge> durch die <Ersatzzeichenfolge>. Ist <Zahl> 0, so werden alle Vorkommen ersetzt. Ist <Zahl> größer 0, so wird nur das n-te Vorkommen ersetzt. Die Zählung beginnt bei 1.

Beispiel: ReplaceRegValue (HKCU, "Volatile Environment", "Homedrive", "C", "D", 0)
Also würde ich das so umsetzen:
ReplaceRegValue (HKCU,SOFTWARE\\eDrawings\\e2010\\General, "Activated", "0", "1", 0)

Wenn du sicher gehn willst, mach doch einfach kurz einen Diff für den Key und kopiere dir die Zeile dann in das eigentliche Paket.

Posted: 19. Nov 2009, 08:57
by lennu
Hallo,

warum so kompliziert über ReplaceRegValue?

Code: Select all

[Reg:Product]
HKCU,SOFTWARE\eDrawings\e2010\General,Activated,0x00010001,1
Viele Grüße,
Lennu

Posted: 20. Nov 2009, 08:14
by Lurchi
Also egal wie ich den ReplaceRegValue angebe, die Registry sagt immer ungültiger Wert. Ist doch seltsam ....
Was macht denn der von Lennu vorgeschlagene Eintrag

[Reg:Product]
HKCU,SOFTWARE\eDrawings\e2010\General,Activated,0x00010001,1

genau ?

Uli

Posted: 20. Nov 2009, 08:47
by Julia
Damit wird ein Regkey gesetzt mit dem Namen "Activated", Typ REG_DWORD (0x00010001) und dem Wert 1.
Das sollte also so auch funktionieren.

Wie schon geschrieben, am einfachsten ist es sonst ein Diff laufen zu lassen, und sich dann die entsprechende Zeile in das bestehende Paket zu kopieren. Das geht zumindest schneller, als wenn du noch 3 Tage rumprobierst ;)

Posted: 20. Nov 2009, 09:14
by Lurchi
Das mit dem Diff hab ich ja gemacht. "ungültiger Wert". Versteh ich auch nicht.

Posted: 20. Nov 2009, 09:34
by Julia
Und wenn du den Wert nach der Installation manuell setzt, geht es?

Wo, wer und wann genau heißt es denn "ungültiger Wert"?

Posted: 20. Nov 2009, 09:42
by Lurchi
Das steht in der Registry wenn ich prüfen will ob der korrekte Wert drin steht.

Posted: 20. Nov 2009, 11:01
by MSC
Hi,

ich würde den Key erst löschen und danach neu setzen. Da ein Löschen bei Nichtvorhandensein einen Fehler bringt, erst auf Vorhandensein prüfen.

Also zum Beispiel:

...
If DoesRegKeyExist ("HKCU,SOFTWARE\eDrawings\e2010\General,Activated") == "1" Then "Reg:CleanUp" EndIf
#Reg:SetKey, CLIENT

[Reg:CleanUp]
-HKCU,"SOFTWARE\eDrawings\e2010\General","Activated"

[Reg:SetKey]
HKCU,"SOFTWARE\eDrawings\e2010\General","Activated",0x00010001,00000001
...


Bitte erst testen.

mfg Mario