чтение реестра в X64
От: andreypro  
Дата: 07.10.10 09:17
Оценка:
Столкнулся с такой проблемой, на Vista X64 в реестре программа писала значение в ветку:
HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\MyProgram

через regedit посмотрел куда она пишет на самом деле:
HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\MyProgram

после обновления программы т.к. вистализацию отключил теперь не могу прочитать эту ветку.

вот пробую напрямую прочитать через RegOpenKeyEx с ключом KEY_WOW64_32KEY, но пишет что нет такой ветки


Public Function OpenSubKey(ByVal namePath As String, ByVal name As String) As String
        Dim key As IntPtr = New IntPtr(&H80000001)
        Dim subKeyHandle As IntPtr
        Dim result As Integer = WinAPI.RegOpenKeyEx(key, namePath, 0, &H20019 Or &H200, subKeyHandle)
        If (result = 0) Then
            Dim lpType As Integer = 0
            Dim lpcbData As Integer = 0
            Dim num3 As Integer = WinAPI.RegQueryValueEx(subKeyHandle, name, Nothing, (lpType), Nothing, lpcbData)
            If (lpcbData > 0) Then
                Dim buffer As New StringBuilder(CInt(lpcbData / 2))
                num3 = WinAPI.RegQueryValueEx(subKeyHandle, name, Nothing, (lpType), buffer, (lpcbData))
                Return buffer.ToString()
            End If
        End If
        Return String.Empty
    End Function
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.