Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Reg. eintrag lesen und schreiben Prob
Frage
Hi
und zwar habe ich einmal ein Modul:
Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32" 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 RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Declare Function RegCreateKeyEx Lib "advapi32" 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, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
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 KEY_ALL_ACCESS = &H3F
Public Const REG_OPTION_NON_VOLATILE = 0&
Public Const REG_CREATED_NEW_KEY = &H1
Public Const REG_OPENED_EXISTING_KEY = &H2
Public Const ERROR_SUCCESS = 0&
Public Const REG_SZ = (1)
Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
Public Function bSetRegValue(ByVal hKey As Long, ByVal lpszSubKey As String, ByVal sSetValue As String, ByVal sValue As String) As Boolean
On Error Resume Next
Dim phkResult As Long
Dim lResult As Long
Dim SA As SECURITY_ATTRIBUTES
Dim lCreate As Long
RegCreateKeyEx hKey, lpszSubKey, 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, SA, phkResult, lCreate
lResult = RegSetValueEx(phkResult, sSetValue, 0, REG_SZ, sValue, CLng(Len(sValue) + 1))
RegCloseKey phkResult
bSetRegValue = (lResult = ERROR_SUCCESS)
End Function
Public Function bGetRegValue(ByVal hKey As Long, ByVal sKey As String, ByVal sSubKey As String) As String
Dim lResult As Long
Dim phkResult As Long
Dim dWReserved As Long
Dim szBuffer As String
Dim lBuffSize As Long
Dim szBuffer2 As String
Dim lBuffSize2 As Long
Dim lIndex As Long
Dim lType As Long
Dim sCompKey As String
lIndex = 0
lResult = RegOpenKeyEx(hKey, sKey, 0, 1, phkResult)
Do While lResult = ERROR_SUCCESS And Not (bFound)
szBuffer = Space(255)
lBuffSize = Len(szBuffer)
szBuffer2 = Space(255)
lBuffSize2 = Len(szBuffer2)
lResult = RegEnumValue(phkResult, lIndex, szBuffer, lBuffSize, dWReserved, lType, szBuffer2, lBuffSize2)
If (lResult = ERROR_SUCCESS) Then
sCompKey = Left(szBuffer, lBuffSize)
If (sCompKey = sSubKey) Then
bGetRegValue = Left(szBuffer2, lBuffSize2 - 1)
End If
End If
lIndex = lIndex + 1
Loop
RegCloseKey phkResult
End Function
so und dann hier meinen code
Private Sub Command1_Click()
bSetRegValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", "ShutDown Manager", "hallo"
End Sub
Private Sub Command2_Click()
Label1.Caption = bGetRegValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", "ShutDown Manager")
End Sub
das schreiben in die reg geht nur ich kann den blöden wert nicht mehr auslesen wird mir immer nichts an gezeigt hat da einer ne idea wie ich das mache ???
Cya
Antwort 1 von semi
RegCloseKey fehlt nach dem Schreiben. Die Registry wird erst dann aktualisiert, wenn Du das Key-Handle wieder freigibst.
Antwort 2 von Tobias
Okay erst mal danke für die hilfe aber ich bekomme den key nicht mal aus gelesen die Caption bleibt immer lehr selbst wenn ich z.B mal den pc neu starte und der key schon drin steht und das mit den RegCloseKey funzt bei mir net so vieleicht kannst mir ja mal nen code geben der wo funzt
cya
cya
Antwort 3 von xianwen
Auslesen einzelner Werte geht eigendlich mit RegQueryValueEx:
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
Dim res&, wert$, wert-len&, hkey1&
res& = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "der schlüsselpfad", 0, KEY_ALL_ACCESS, hkey1&)
Wert$ = Space(100)
wert_len& = 100
res& = RegQueryValueEx(hkey1&, Schlüsselname, 0, 0, ByVal Wert$, wert_len&)
"wert$" ist dann das was du wolltest
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
Dim res&, wert$, wert-len&, hkey1&
res& = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "der schlüsselpfad", 0, KEY_ALL_ACCESS, hkey1&)
Wert$ = Space(100)
wert_len& = 100
res& = RegQueryValueEx(hkey1&, Schlüsselname, 0, 0, ByVal Wert$, wert_len&)
"wert$" ist dann das was du wolltest
Antwort 4 von Tobias
Hi
noch mal danke habe jetzt mal 2 Stunden rum Probiert aber bekomme des net hin :( hast du vieleicht mal nen ganzen code wo z.B label usw schon mit drin ist..
danke
noch mal danke habe jetzt mal 2 Stunden rum Probiert aber bekomme des net hin :( hast du vieleicht mal nen ganzen code wo z.B label usw schon mit drin ist..
danke

