Supportnet Computer
Planet of Tech

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

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


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