afridbeertje3
Gebruiker
- Lid geworden
- 22 jan 2012
- Berichten
- 12
Ik gebruik op dit moment het volgende script in Visual Basic 6:
Het zorgt ervoor dat alle reg keys in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run in een listbox worden gezet.
Dit werkt perfect. Alleen nu heb ik het probleem dat als je dit invoert dat hij eigenlijk dit uitvoert:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
Dat komt omdat ik een 64 bit pc heb. Nu heb ik op gezocht dat je dit kan verhelpen met de commando KEY_WOW64_32KEY.
Heb alleen geen idee hoe ik dit moet toepassen in combinatie met RegOpenKey.
Kan iemand misschien een direct voorbeeld geven hoe ik dit zou moeten invoeren ?
Of hoe ik op een andere manier het probleem kan verhelpen.
Groeten Afridbeertje
Code:
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Const ERROR_NO_MORE_ITEMS = 259&
Const HKEY_LOCAL_MACHINE = &H80000002
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private 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, lpData As Any, lpcbData As Long) As Long
Private Sub Command1_Click()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
'--------------------------------------------------MAAK ALLES LEEG-----------------------------------------------------
List1.Clear
List2.Clear
'--------------------------------------------------MAAK ALLES LEEG-----------------------------------------------------
Dim hKey As Long, Cnt As Long, sName As String, sData As String, Ret As Long, RetData As Long, FT As FILETIME
Const BUFFER_SIZE As Long = 255
'---Open a registry key
If RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", hKey) = 0 Then
'-------initialize
sName = Space(BUFFER_SIZE)
sData = Space(BUFFER_SIZE)
Ret = BUFFER_SIZE
RetData = BUFFER_SIZE
'-------enumerate the values
While RegEnumValue(hKey, Cnt, sName, Ret, 0, ByVal 0&, ByVal sData, RetData) <> ERROR_NO_MORE_ITEMS
'-------show data
If RetData > 0 Then List1.AddItem " " + Left$(sName, Ret)
List2.AddItem Left$(sData, RetData - 1)
'-----------prepare for next value
Cnt = Cnt + 1
sName = Space(BUFFER_SIZE)
sData = Space(BUFFER_SIZE)
Ret = BUFFER_SIZE
RetData = BUFFER_SIZE
Wend
'-------Close the registry key
RegCloseKey hKey
Else
List1.AddItem " Error while calling RegOpenKey"
List2.AddItem " Error while calling RegOpenKey"
End If
End Sub
Het zorgt ervoor dat alle reg keys in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run in een listbox worden gezet.
Dit werkt perfect. Alleen nu heb ik het probleem dat als je dit invoert dat hij eigenlijk dit uitvoert:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
Dat komt omdat ik een 64 bit pc heb. Nu heb ik op gezocht dat je dit kan verhelpen met de commando KEY_WOW64_32KEY.
Heb alleen geen idee hoe ik dit moet toepassen in combinatie met RegOpenKey.
Kan iemand misschien een direct voorbeeld geven hoe ik dit zou moeten invoeren ?
Of hoe ik op een andere manier het probleem kan verhelpen.
Groeten Afridbeertje