Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Registry: Wert in einem Registryschlüssel löschen
RegDeleteValue löscht einen Wert in einem Registryschlüssel
L1(Param.1 Longint ): Handle eines schon geöffneten Keys als LongInt oder folgende vordefinierte Werte =>
HKEY_CLASSES_ROOT = $80000000
HKEY_CURRENT_USER = $80000001
HKEY_LOCAL_MACHINE = $80000002
HKEY_USERS = $80000003
L2(Param.2 Longint ) oder B3(Param.3 Bereich ): Handle oder Bereichsvariable mit dem Namen des Wertes, der gelöscht werden soll.
Declare Handle#,Fehler&,Key#,Name#,Wert#,Size#,Type#,Button&,Button2&
Declare Writewert$,Wert2#
Def @Regclosekey(1) !ADVAPI32,RegCloseKey
Def @Regsetvalueex(6) !ADVAPI32,RegSetValueExA
Def @Regcreatekey(3)!ADVAPI32,RegCreateKeyA
Def @Regdeletekey(2) !ADVAPI32,RegDeleteKeyA
Def @Regdeletevalue(2) !ADVAPI32,RegDeleteValueA
Def @Regopenkeyex(5) !ADVAPI32,RegOpenKeyExA
Windowstyle 31
Windowtitle Registryschlüssel erstellen
Window 0,0-640,440
Let Button&=@Createbutton(%Hwnd,Schlüssel löschen,20,300,200,30)
Let Button2&=@Createbutton(%Hwnd,Werte löschen,320,300,200,30)
Dim Key#,260
Dim Handle#,4
Dim Name#,250
Dim Size#,4
Dim Wert#,260
Dim Wert2#,4
Dim Type#,4
String Key#,0=SoftwareMMJ-Test
Let Fehler&=@Regcreatekey($80000001,Key#,Handle#)
Print Fehlercode beim Erstellen/Öffenen des Schlüssels SoftwareMMJ-Test: ;Fehler&
If Fehler&=0
Let Writewert$=Meine Software
String Wert#,0=Softwarepfad
Let Fehler&=@Regsetvalueex(@Long(Handle#,0),@Addr(Writewert$),0,1,Wert#,@Len(Softwarepfad)+1)
Print Fehlercode RegSetValueEx Softwarepfad: ;Fehler&
Let Writewert$=Seriennummer
Long Wert2#,0=22334
Let Fehler&=@Regsetvalueex(@Long(Handle#,0),@Addr(Writewert$),0,4,Wert#,4)
Print Fehlercode RegSetValueEx Seriennummer: ;Fehler&
Let Writewert$=Byteliste
Clear Wert#
Byte Wert#,0=65
Byte Wert#,1=66
Byte Wert#,2=67
Byte Wert#,3=68
Let Fehler&=@Regsetvalueex(@Long(Handle#,0),@Addr(Writewert$),0,3,Wert#,10)
Print Fehlercode RegSetValueEx Byteliste: ;Fehler&
Print Fehlercode RegCloseKey: ;@Regclosekey(@Long(Handle#,0))
Endif
Dispose Type#
Dispose Wert#
Dispose Wert2#
Dispose Key#
Dispose Handle#
Dispose Name#
Dispose Size#
While 0=0
Waitinput
If @Getfocus(Button&)
Dim Key#,260
Print
String Key#,0=SoftwareMMJ-Test
Let Fehler&=@Regdeletekey($80000001,Key#)
Print Fehlercode beim Löschen des Schlüssels SoftwareMMJ-Test: ;Fehler&
Dispose Key#
@Setfocus(%Hwnd)
Elseif @Getfocus(Button2&)
Print
Dim Key#,260
Dim Handle#,4
Dim Name#,256
String Key#,0=SoftwareMMJ-Test
Let Fehler&=@Regopenkeyex($80000001,Key#,0,$F003f,Handle#)
Print Fehlercode beim Öffnen des Schlüssels SoftwareMMJ-Test: ;Fehler&
If Fehler&=0
String Name#,0=Meine Software
Let Fehler&=@Regdeletevalue(@Long(Handle#,0),Name#)
Print Fehlercode beim Löschen des Wertes Meine Software: ;Fehler&
String Name#,0=Seriennummer
Let Fehler&=@Regdeletevalue(@Long(Handle#,0),Name#)
Print Fehlercode beim Löschen des Wertes Seriennummer: ;Fehler&
String Name#,0=Byteliste
Let Fehler&=@Regdeletevalue(@Long(Handle#,0),Name#)
Print Fehlercode beim Löschen des Wertes Byteliste: ;Fehler&
Print Fehlercode RegCloseKey: ;@Regclosekey(@Long(Handle#,0))
Endif
Dispose Key#
Dispose Handle#
Dispose Name#
@Setfocus(%Hwnd)
Endif
Wend