Registry

TheLuCKer

Mitglied
Hallo,

kann mir einer sagen, wie ich es schaffe, dass ich einen Einrag in der Registry lösche. Also ich speichere einen Eintrag mit dem folgedem Befehl:

SaveSetting "MasterSend", "Passwort", "PassWort", frmLogin.txtPassword.Text

Jetzt möchte ich diesen Eintrag löschen, wenn ich auf einem Button klicke (Command1)

Bitte helft mir! WICHTIG

LuCKer
 
ich weiß nicht, kannst du mir vielleicht ein Beispiel oder so schreiben, dass ich es in mein pro einsetzten kann. bin ziemlich neu in registry-part, aber es wäre wirklich wichtig. ich hab das schonmal wo gelesen:

DeleteSetting appname, section [,key]

für Speichern:

SaveSetting appname, section, key, setting

Bei mir schaut das Speichern dann so aus:

SaveSetting "MasterSend", "Passwort", "PassWort", frmLogin.txtPassword.Text

, aber kann mir dann keiner beim LÖSCHEN helfen, bitte

LUCKER
 
Eintrag löschen mit DeleteSetting:

1.) kompletter Zweig:
DeleteSetting "MasterSend"

2.) Sektion löschen:
DeleteSetting "MasterSend", "Passwort"

3.) Schlüssel löschen
DeleteSetting "MasterSend", "Passwort", "PassWort"

Bei deiner Methode ist die Wurzel für den Speicherort, in dem du die Daten ablegen willst, vorgegeben.
HKEY_CURRENT_USER\Software\VB and VBA Program Settings

Wenn du an beliebiger Position Einträge erstellen oder neue Zweige einfügen willst, kannst du das soviel ich weis, nur über API's steuern.
 
API steht für Applikation Programming Interface. Das sind fertige Programmteile, die für die Nutzung anderer Programme zur Verfügung stehen. In Windows liegen die DLLs im System32 Ordner.

Hier eine Beispielfunktion, die in der Registry ließt. In den Declarationen, die im allgemeinen Programmteil stehen, kannst Du sehen, welche DLLs genutzt werden. Kopier dir alles in einen Editor, da ist es leichter zu lesen.

'API-Deklarationen
'
'
' WINDOWS-REGISTRY bearbeiten
'
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
'
'Konstanten-Deklarationen
Public Const REG_SZ = 1
Public Const REG_DWORD = 4
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_ALL_ACCESS = 63
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const REG_OPTION_VOLATILE = 1
Public Const REG_OPTION_NON_VOLATILE = 0


Public Sub REGISTRY_READ()
Dim Puffer As String
Dim Länge As Long
Dim RWert As Long
Dim Handle As Long
Dim Eintrag As String

'*
'* REGISTRY lesen
'*
'*Schlüssel "Software\TEST\FTPMGMT"
'*im Hauptschlüssel HKEY_LOCAL_MACHINE öffnen.
'RWert = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\TEST\FTPMGMT", 0, KEY_QUERY_VALUE, Handle)

'*
'*Puffervariable anlegen
'*
Puffer = String(255, 0)
Länge = Len(Puffer)
'*

'* Schlüssel freigeben
'RWert = RegCloseKey(Handle)

'*
'*TEST_GLOBAL - REGISTRY lesen
'*
'*Schlüssel "Software\TEST\TEST_GLOBAL"
'*im Hauptschlüssel HKEY_LOCAL_MACHINE öffnen.
RWert = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\TEST\TEST_GLOBAL", 0, KEY_QUERY_VALUE, Handle)
'Puffervariable anlegen
Puffer = String(255, 0)
Länge = Len(Puffer)
'Wert des Zeichenfolgen-Eintrags 'Personal' lesen (Puffervariable 'By Value' übergeben!)
RWert = RegQueryValueEx(Handle, "DNS_NAME", 0, REG_SZ, ByVal Puffer, Länge)
'Falls Aktion erfolgreich, dann...
If RWert = 0 Then
'... Wert aus Puffervariable isolieren
DNS_NAME = Left(Puffer, Länge)
'Wert anzeigen
'Text1.Text = "Ordner für persönliche Dokumente: " & Eintrag
End If
Puffer = String(255, 0)
Länge = Len(Puffer)
RWert = RegQueryValueEx(Handle, "DNS_USER", 0, REG_SZ, ByVal Puffer, Länge)
'Falls Aktion erfolgreich, dann...
If RWert = 0 Then
'... Wert aus Puffervariable isolieren
DNS_USER = Left(Puffer, Länge - 1)
'Wert anzeigen
'Text1.Text = "Ordner für persönliche Dokumente: " & Eintrag
End If
Puffer = String(255, 0)
Länge = Len(Puffer)
RWert = RegQueryValueEx(Handle, "DNS_PWD", 0, REG_SZ, ByVal Puffer, Länge)
'Falls Aktion erfolgreich, dann...
If RWert = 0 Then
'... Wert aus Puffervariable isolieren
DNS_PWD = Left(Puffer, Länge - 1)
'Wert anzeigen
'Text1.Text = "Ordner für persönliche Dokumente: " & Eintrag
End If
Puffer = String(255, 0)
Länge = Len(Puffer)
RWert = RegQueryValueEx(Handle, "HOST_NAME", 0, REG_SZ, ByVal Puffer, Länge)
'Falls Aktion erfolgreich, dann...
If RWert = 0 Then
'... Wert aus Puffervariable isolieren
SERVNAME = Left(Puffer, Länge - 1)
'Wert anzeigen
'Text1.Text = "Ordner für persönliche Dokumente: " & Eintrag
End If
Puffer = String(255, 0)
Länge = Len(Puffer)
RWert = RegQueryValueEx(Handle, "logfilepath", 0, REG_SZ, ByVal Puffer, Länge)
'Falls Aktion erfolgreich, dann...
If RWert = 0 Then
'... Wert aus Puffervariable isolieren
LOG_PATH = Left(Puffer, Länge - 1)
'Wert anzeigen
'Text1.Text = "Ordner für persönliche Dokumente: " & Eintrag
End If
'Schlüssel freigeben
RWert = RegCloseKey(Handle)

End Sub

Natürlich gibt es diese Schlüssel nicht auf Deinem Rechner, aber anhand der Beispiele kannst Du Dir da was zusammenbauen was funktioniert. Wie man dann diese API zum Schreiben oder löschen nimmt, musst Du ausprobieren (oder in der MSDN Library nachsehen).

Viel Glück
 
Zurück