Seite 1 von 1

Registryeintrag entfernen

Verfasst: 27.07.2014 19:45
von SBond
Hi leute,

ich stell mich mal wieder zu blöd an. Ich schaffe es nicht einen simplen Reg-Eintrag zu löschen.


Code: Alles auswählen

Procedure.i _Autostart_aktivieren(iStatus.i = #True)
	
	Protected lKey.l 		= #HKEY_CURRENT_USER ; oder #HKEY_LOCAL_MACHINE für alle Benutzer
	Protected sPfad.s 		= "Software\Microsoft\Windows\CurrentVersion\Run"
	Protected sEintrag.s 	= "Zeitserver_CLIENT"
	Protected sWert.s 		= Chr(34) + ProgramFilename() + Chr(34)
	Protected lCurKey.l 	= 0
	
	; Registrieeintrag erstellen (oder löschen)
	If iStatus
		RegCreateKey_	(lKey, @sPfad, @lCurKey)
		RegSetValueEx_	(lCurKey, @sEintrag, 0, #REG_SZ, @sWert, StringByteLength(sWert))
	Else
		RegOpenKey_			(lKey, @sPfad, lCurKey)
		RegDeleteKeyValue_	(lKey, @sWert, @sEintrag) ; --> geht nicht???
	EndIf
	
	RegCloseKey_(lCurKey)
	
	ProcedureReturn 0
	
EndProcedure 
die WinAPI "RegDeleteKeyValue" wird scheinbar nicht erkannt. kennt jemand die Lösung?

viele Grüße,
SBond

Re: Registrieeintrag entfernen

Verfasst: 27.07.2014 19:49
von RSBasic
Wenn PB die API-Funktion nicht kennt, dann musst du diese manuell importieren.

Re: Registrieeintrag entfernen

Verfasst: 27.07.2014 20:08
von SBond
so scheint es zu finktionieren:

Code: Alles auswählen

RegOpenKey_		(lKey, @sPfad, lCurKey)
RegDeleteKey_		(lKey, sPfad)
danke dir trotzdem :)

......................................................
Edit: nicht gut. das löscht alle Einträge.

Re: Registrieeintrag entfernen

Verfasst: 27.07.2014 20:15
von RSBasic
Okay <) Aber falls du wieder das Problem haben solltest, dass du eine bestimmte API-Funktion nicht verwenden kannst, dann musst du diese mit OpenLibrary() importieren. Einfach auf der jeweiligen MSDN-Seite ganz unten in der Tabelle schauen, welche DLL-Datei dafür zuständig ist. Google einfach nach "%Funktionsname% msdn", beispielsweise "RegDeleteKeyValue msdn". Dann bekommst du die direkte Seite mit der Funktionsbeschreibung und mit anderen Informationen.
Der Name der DLL-Datei musst du als Parameter bei OpenLibrary() angeben und die Parameterliste der Funktion, die du gerne benutzen möchtest, definieren. Dann sollte es auch schon funktionieren. ;)
Am besten benutze auch Prototype. Beispielcodes findest du auch im Forum.

Re: Registrieeintrag entfernen

Verfasst: 27.07.2014 20:41
von SBond
supi :mrgreen:
werde ich probieren :D

hab noch einen schönen Sonntag ;)

Re: Registrieeintrag entfernen

Verfasst: 27.07.2014 20:43
von RSBasic
Wünsche ich dir auch. :)