[vb6] met een 64 bit systeem 32 bit register aanpassen

Status
Niet open voor verdere reacties.

afridbeertje3

Gebruiker
Lid geworden
22 jan 2012
Berichten
12
Ik gebruik op dit moment het volgende script in Visual Basic 6:
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
 
Als je visual studio hebt kun je naar de tab build gaan en voor Any CPU' kiezen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan