Rubrik: COM/OLE/Registry/DLL · Windows-Registry | VB-Versionen: VB4, VB5, VB6 | 27.12.02 |
Registry im Griff, Teil 2 Erweiterung des Tipps Registry im Griff um auch DWORD-Einträge lesen und speichern zu können. | ||
Autor: Jens Malchow | Bewertung: | Views: 30.915 |
www.malchowgmbh.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Der bereits bekannte Tipp Registry im Griff zeigt, wie man normale Strings und Zahlen aus der Window-Registrierdatenbank lesen und auch in die Registry schreiben kann.
Was aber, wenn es sich um DWORD-Einträge handelt?
DWORD-Einträge wurde bisher nicht berücksichtigt. Daher habe ich den Tipp dementsprechend erweitert.
Neue Funktionen:
fStringSpeichernDWord: Speichert einen Wert als DWord
fSchluesselLoeschen: Löscht einen Schlüssel inklusive aller Einträge und Unterschlüssel
Änderung der Funktion
fRegAbfrageWert (Neue Zeile): Liest jetzt auch DWord Werte
Nun der Code:
' ********** ERGÄNZUNG ********** ' API Deklaration Private Declare Function RegDeleteKey Lib "advapi32.dll" _ Alias "RegDeleteKeyA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String) As Long Const REG_DWORD = 4
' ********** ÄNDERUNG ********** ' liest jetzt auch DWord-Werte ' Wird von "fWertLesen" aufgerufen und gibt den Wert ' eines Schlüsselnamens zurück. Hierbei wird autom. ' ermittelt, ob es sich um einen String oder Binärwert ' handelt. Function fRegAbfrageWert(ByVal hKey As Long, _ ByVal sValueName As String) As String Dim sBuffer As String Dim lRes As Long Dim lTypeValue As Long Dim lBufferSizeData As Long Dim iData As Integer lRes = RegQueryValueEx(hKey, sValueName, 0, _ lTypeValue, ByVal 0, lBufferSizeData) If lRes = 0 Then If lTypeValue = REG_SZ Then sBuffer = String(lBufferSizeData, Chr$(0)) lRes = RegQueryValueEx(hKey, sValueName, 0, _ 0, ByVal sBuffer, lBufferSizeData) If lRes = 0 Then fRegAbfrageWert = Left$(sBuffer, _ InStr(1, sBuffer, Chr$(0)) - 1) End If ' alte Zeile ElseIf lTypeValue = REG_BINARY Then ElseIf lTypeValue >= REG_BINARY Then ' neue Zeile lRes = RegQueryValueEx(hKey, sValueName, 0, _ 0, iData, lBufferSizeData) If lRes = 0 Then fRegAbfrageWert = iData End If End If End If End Function
' ********** NEU ********** ' Wert (DWord) für einen bestimmten ' Schlüsselnamen speichern. Sollte der Schlüssel nicht ' existieren, wird dieser autom. erstellt. ' ' Parameterbeschreibung ' --------------------- ' hKey (Hauptschlüssel) : z.B. HKEY_CURRENT_USER ' sPath (Schlüsselpfad) : z.B. MeineAnwendung ' sValue (Schlüsselname): z.B. Code ' iData (Schlüsselwert) : z.B. 220 Sub fStringSpeichernDWord(hKey As Long, sPath As String, _ sValue As String, iData As String) Dim vRet As Variant RegCreateKey hKey, sPath, vRet RegSetValueEx vRet, sValue, 0, REG_DWORD, _ CLng(iData), 4 RegCloseKey vRet End Sub
' ********** NEU ********** ' Löscht einen Schlüssel inklusive aller Einträge und Unterschlüssel ' ' Parameterbeschreibung ' --------------------- ' hKey (Hauptschlüssel) : z.B. HKEY_CURRENT_USER ' sPath (Schlüsselpfad) : z.B. MeineAnwendung Sub fSchluesselLoeschen(hKey As Long, sPath As String) Dim vRet As Variant RegCreateKey hKey, sPath, vRet RegDeleteKey hKey, sPath RegCloseKey vRet End Sub