Registry Schlüssel erstellen

r4x

Mitglied
moin,

ich hab ein kleines problem und zwar komme ich beim erstellen eines Schlüssels nicht weiter

kann mir vllt. einer ein beispiel machen, wie man einen schlüssel erstellen kann?
ich bekomme nur die Werte hin sprich das auf der Rechten Seite im Registry editor ich mein aber sowas auf der Linken seite

Danke
 
Hi, also, du brauchst als erstes ein paar Apis und Konstante:

Code:
Public Const HKEY_CLASSES_ROOT As Long = &H80000000
Public Const HKEY_CURRENT_USER As Long = &H80000001
Public Const HKEY_LOCAL_MACHINE As Long = &H80000002
Public Const HKEY_USERS As Long = &H80000003
Public Const HKEY_CURRENT_CONFIG As Long = &H80000005

Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_CREATE_LINK = &H20

Public Const ERROR_SUCCESS = 0
Public RegRoot As Long
Public Const KEY_READ = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY

Public Const KEY_ALL_ACCESS = KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK

Public Const REG_NONE = 0
Public Const REG_SZ = 1
Public Const REG_EXPAND_SZ = 2
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4
Public Const REG_DWORD_LITTLE_ENDIAN = 4
Public Const REG_DWORD_BIG_ENDIAN = 5
Public Const REG_LINK = 6
Public Const REG_MULTI_SZ = 7

Public Const REG_OPTION_NON_VOLATILE = &H0

Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public 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
Public 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
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public 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

und dann hier ein Beispiel, wie du einen Schlüssel anlegst, das Wie und Wo musst du dann eben durch Selbstversuche herausfinden:


Beispiel Autorun:

Code:
Public Sub SetAutoRun(sName, Wert)

Dim hKey&

RegOpenKey HKEY_LOCAL_MACHINE, "software\microsoft\windows\currentversion\run", hKey

RegSetValueEx hKey, sName, 0 REG_SZ, ByVal Wert,Len(Wert)

RegCloseKey hKey

Hoffe ich konnte dir helfen!
 
danke erstmal für deine antwort!

also ich will ein Programm machen, welches bei angabe des namens einen eintrag in

software\microsoft\windows\currentversion\app paths

macht und dann ein wert erstellt wird mit dem name : path und darin ein pfad, den man auch angeben kann

ich hab alles versucht auch mit deinem beispiel aber ich bekomme es nicht auf die reihe

... scheiss tag heute
 
Ok, hier der code:

Als erstes, zum Überprüfen ob der Eintrag schon existiert, wenn ja, dann kannst du damit machen was du willst.
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



Und jetzt der Code damit du einen String in die Registry schreiben kannst:

Code:
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

Aufrufen tust du das ganze so:

Code:
'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
      
           RegValueSetString(Root,Pfad,SchlüsselName,Wert)
      end if
end if

Hoffe das hilft, ich hab das jetzt so aus dem stehgreif gecodet, hoffe das keine fehler drinnen sind!
 
gerade nach Haus gekommen und deinen Post enddeckt :)

Danke das du dur die Arbeit gemacht hast, für mich den Code zu erstellen allerdings kommt nach dem Drcuk auf den Button ein Fehler und zwar in der Zeile,

RegValueSetString(Root,Pfad,SchlüsselName,Wert)

Diese ist auch im Code selber Rot dargestellt
 
Ich denke mal, es müssen einfach die Klammern weg, weil die Funktion (?) ohne Rückgabe eines Wertes in eine Variable aufgerufen wird:
Code:
RegValueSetString Root,Pfad,SchlüsselName,Wert
 
wenn ich die klammern weglassen, dann kommt beim Button Klick ein Fehler "Ertwartet Sub"
so dann mach ich End Sub, dann funktioniert erstmal das nur dann ist wiederrum
Laufzeitfehler 13 typen unverträglich und das wird gelb gekennzeichnet:

If Wert And SchlüsselName <> "" Then
 
also wenn ich deinen code nehme kommt syntaxfehler und das wird rot markiert

RegValueSetString(Root,Pfad,SchlüsselName,Wert)
 

Neue Beiträge

Zurück