Registry Schlüssel erstellen

also jetzt kommt end Sub erwartet

wenn ich am ende den sub mit "end sub" schließe kommt gleich der nächste fehler,
nämlich:

Laufzeitfehler '13'
Typen unverträglich

und die Zeile:

If Wert And SchlüsselName <> "" Then

ist gelb hervorgehoben
 
Man kann Strings doch auch gar nicht mit AND und Or verknüpfen!
Warscheinlich ist folgendes gemeint:
Code:
If (Wert <>"") And (SchlüsselName <> "") Then
 
lol mhh dann kommt sub oder dunktion is nicht definiert und das gelb:

Function RegKeyExist(Root&, Schlüssel$, sWert$) As Boolean

ach ja und das is blau markiert

RegOpenKey
 
Zuletzt bearbeitet:
Wenn du die fehlermeldung bekommst "End Sub" dann hast du irgendwas falsch gemacht, poste einfach deinen code so wie er bei dir steht, dann seh ich mir das an!
 
Code:
Function RegKeyExist(Root&, Schlüssel$, sWert$) As Boolean

  Dim Ergebnis&, hKey&, dwType&, Wert&
     

    'Prüfen ob ein Schlüssel existiert
    RegOpenKey Root, Schlüssel, hKey
    
    Ergebnis = RegQueryValueEx(hKey, Feld, 0, dwType, ByVal 0, Wert)
    
    If Ergebnis = ERROR_SUCCESS Then
        RegKeyExist = True
    Else
        RegKeyExist = False
    End If
    
    RegCloseKey hKey
End Function

Public Sub RegValueSetString(Root As Long, Schlüssel As String, Feld As String, Wert$)
  Dim hKey$, strWert$
    
    
    RegOpenKey Root, Schlüssel, hKey
    
      If VarType(Wert) = vbString Then
          strWert = CStr(Wert)
          Result = RegSetValueEx_Str(hKey, Feld, 0, REG_SZ, strWert, Len(strWert) + 1)
     End If
    
    RegCloseKey hKey
End Sub

'Du brauchst zwei Textbox (text1 & text2) und einen Commandbutton (Command1)

Private Sub Command1_Click()
Dim Root&
Dim Pfad$, Wert$, SchlüsselName$

Root = HKEY_LOCAL_MACHINE
Pfad = "software\microsoft\windows\currentversion\app paths"
Wert = Text1.Text
SchlüsselName = Text2.Text

If (Wert <> "") And (SchlüsselName <> "") Then
    
      If RegKeyExist(Root, Pfad, Wert) = False Then
      
           Call RegValueSetString(Root, Pfad, SchlüsselName, Wert)
      End If
End If

End Sub
 
Hi,

hier ist jetzt das gesamte beispiel, bei mir funktioniert es jetzt, der fehler war das ich vergessen hab dir einen verweis auf eine api funktion zu posten! Sorry..

Code:
Public Declare Function RegSetValueEx_Str Lib "advapi32.dll" _
        Alias "RegSetValueExA" (ByVal hKey As Long, ByVal _
        lpValueName As String, ByVal Reserved As Long, ByVal _
        dwType As Long, ByVal lpData As String, ByVal cbData As _
        Long) As Long



Code:
Option Explicit

Public Function Field_Check(txtWert As TextBox, txtSchluessel As TextBox) As Boolean
Dim Zaehler%

    Field_Check = False
    
    If txtWert <> "" Then Zaehler = Zaehler + 1
    If txtSchluessel <> "" Then Zaehler = Zaehler + 1
    
    If Zaehler = 2 Then Field_Check = True

End Function
Function RegKeyExist(Root&, Schlüssel$, sWert$) As Boolean

  Dim Ergebnis&, hKey&, dwType&, Wert&
     

    'Prüfen ob ein Schlüssel existiert
    RegOpenKey Root, Schlüssel, hKey
    
    Ergebnis = RegQueryValueEx(hKey, Feld, 0, dwType, ByVal 0, Wert)
    
    If Ergebnis = ERROR_SUCCESS Then
        RegKeyExist = True
    Else
        RegKeyExist = False
    End If
    
    RegCloseKey hKey
End Function

Public Sub RegValueSetString(Root As Long, Schlüssel As String, Feld As String, Wert$)
  Dim hKey&, strWert$
    
    
    RegOpenKey Root, Schlüssel, hKey
    
      If VarType(Wert) = vbString Then
          strWert = CStr(Wert)
          Result = RegSetValueEx_Str(hKey, Feld, 0, REG_SZ, strWert, Len(strWert) + 1)
     End If
    
    RegCloseKey hKey
End Sub

'Du brauchst zwei Textbox (text1 & text2) und einen Commandbutton (Command1)

Private Sub Command1_Click()
Dim Root&
Dim Pfad$, Wert$, SchlüsselName$

Root = HKEY_LOCAL_MACHINE
Pfad = "software\microsoft\windows\currentversion\app paths"
Wert = Text1.Text
SchlüsselName = Text2.Text

    If Field_Check(Text1, Text2) = True Then
    
      If RegKeyExist(Root, Pfad, Wert) = False Then
      
           Call RegValueSetString(Root, Pfad, SchlüsselName, Wert)
           
      End If
      
    End If

End Sub
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück