powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / реестр. читаем все ключи в ветке
6 сообщений из 31, страница 2 из 2
реестр. читаем все ключи в ветке
    #37396881
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня твой код после исправления "=" на "<>" и добавления недостающих констант работает нормально
...
Рейтинг: 0 / 0
реестр. читаем все ключи в ветке
    #37396884
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
каких именно констант? может я что не так назначил?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
Private Type FILETIME
 lLowDateTime As Long
 lHighDateTime As Long
End Type
Private Declare Function RegEnumKeyEx& Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey&, ByVal dwIndex&, ByVal lpname$, lpcbName&, ByVal lpReserved&, ByVal lpClass$, lpcbClass&, lpftLastWriteTime As FILETIME)

Public Sub GetUninstallKeys()
    Dim I As Integer
    Dim intSearchLen As Integer
    Dim lngResult As Long
    Dim lngKeyHandle As Long
    Dim lngCurIdx As Long
    Dim lngValueLen As Long
    Dim strValue As String
    Dim lngClassLen As Long
    Dim strClass As String
    Dim lngTime As FILETIME
    Dim strResult As String
    Dim blnMatch As Boolean
    
    HasUN = False 'íåò òî÷åê âõîäà
    I =  0 
  
    ' Open the Root Branch to search
    lngResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft",  0 &, KEY_READ, lngKeyHandle)
    
    If lngResult <> ERROR_SUCCESS Then
        MsgBox "Cannot open key.", , "Search Registry Keys"
    Else
    ' If the Root branch can be opened, begin the search
        lngCurIdx =  0 
        
        Do
            lngValueLen =  2000 
            strValue = String(lngValueLen,  0 )
            lngClassLen =  2000 
            strClass = String(lngClassLen,  0 )
        
            ' Enumerate all the sub keys
            lngResult = RegEnumKeyEx(lngKeyHandle, lngCurIdx, ByVal strValue, lngValueLen,  0 &, ByVal strClass, lngClassLen, lngTime)
           
            ' Increment the index of found keys
            lngCurIdx = lngCurIdx +  1 
        
            If lngResult = ERROR_SUCCESS Then
                ' Trim the current key to its actual length
                List1.AddItem strValue
            End If
        
        ' Keep looking for more keys
        Loop While lngResult = ERROR_SUCCESS
        ' Close the Root Branch
        lngResult = RegCloseKey(lngKeyHandle)
        
        ' Display the total matches
        'MsgBox "Total matches:" & Str(I), , "Search Registry Keys"
    End If
End Sub

Private Sub Form_Load()
GetUninstallKeys
End Sub



' = = = = = = = = = = КОД МОДУЛЯ = = = = = = = = = = = = = 

Option Explicit

Public Const REG_SZ As Long =  1 
Public Const REG_DWORD As Long =  4 


Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_USERS = &H80000003


Public Const ERROR_NONE =  0 
Public Const ERROR_BADDB =  1 
Public Const ERROR_BADKEY =  2 
Public Const ERROR_CANTOPEN =  3 
Public Const ERROR_CANTREAD =  4 
Public Const ERROR_CANTWRITE =  5 
Public Const ERROR_OUTOFMEMORY =  6 
Public Const ERROR_INVALID_PARAMETER =  7 
Public Const ERROR_ACCESS_DENIED =  8 
Public Const ERROR_INVALID_PARAMETERS =  87 
Public Const ERROR_NO_MORE_ITEMS =  259 

Public Const KEY_ALL_ACCESS = &H3F

Public Const REG_OPTION_NON_VOLATILE =  0 

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKeyEx Lib "advapi32.dll" 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, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" 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 RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long) As Long
Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Long, lpcbData As Long) As Long
Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long
Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long
Declare Function RegDeleteKey& Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String)
Declare Function RegDeleteValue& Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String)


...
Рейтинг: 0 / 0
реестр. читаем все ключи в ветке
    #37396885
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно
целый вагон констант не определен.

читаем ФАК
...
Рейтинг: 0 / 0
реестр. читаем все ключи в ветке
    #37396892
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
Option Explicit
Private Type FILETIME
 lLowDateTime As Long
 lHighDateTime As Long
End Type
Private Declare Function RegEnumKeyEx& Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey&, ByVal dwIndex&, ByVal lpname$, lpcbName&, ByVal lpReserved&, ByVal lpClass$, lpcbClass&, lpftLastWriteTime As FILETIME)

Public Sub GetUninstallKeys()
    Dim I As Integer
    Dim intSearchLen As Integer
    Dim lngResult As Long
    Dim lngKeyHandle As Long
    Dim lngCurIdx As Long
    Dim lngValueLen As Long
    Dim strValue As String
    Dim lngClassLen As Long
    Dim strClass As String
    Dim lngTime As FILETIME
    Dim strResult As String
    Dim blnMatch As Boolean
    
    Dim HasUN As Boolean
    Dim KEY_READ As Long
    
    HasUN = False 'íåò òî÷åê âõîäà
    I =  0 
  
    ' Open the Root Branch to search
    lngResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft",  0 &, KEY_READ, lngKeyHandle)
    
    If lngResult <> ERROR_SUCCESS Then
        MsgBox "Cannot open key.", , "Search Registry Keys"
    Else
    ' If the Root branch can be opened, begin the search
        lngCurIdx =  0 
        
        Do
            lngValueLen =  2000 
            strValue = String(lngValueLen,  0 )
            lngClassLen =  2000 
            strClass = String(lngClassLen,  0 )
        
            ' Enumerate all the sub keys
            lngResult = RegEnumKeyEx(lngKeyHandle, lngCurIdx, ByVal strValue, lngValueLen,  0 &, ByVal strClass, lngClassLen, lngTime)
           
            ' Increment the index of found keys
            lngCurIdx = lngCurIdx +  1 
        
            If lngResult = ERROR_SUCCESS Then
                ' Trim the current key to its actual length
                List1.AddItem strValue
            End If
        
        ' Keep looking for more keys
        Loop While lngResult = ERROR_SUCCESS
        ' Close the Root Branch
        lngResult = RegCloseKey(lngKeyHandle)
        
        ' Display the total matches
        'MsgBox "Total matches:" & Str(I), , "Search Registry Keys"
    End If
End Sub

Private Sub Form_Load()
GetUninstallKeys
End Sub



' = = = = = = = = =  МОДУЛЬ = = = = = = = = = = 



Option Explicit

Public Const REG_SZ As Long =  1 
Public Const REG_DWORD As Long =  4 


Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_USERS = &H80000003

Public Const ERROR_SUCCESS =  5 
Public Const ERROR_NONE =  0 
Public Const ERROR_BADDB =  1 
Public Const ERROR_BADKEY =  2 
Public Const ERROR_CANTOPEN =  3 
Public Const ERROR_CANTREAD =  4 
Public Const ERROR_CANTWRITE =  5 
Public Const ERROR_OUTOFMEMORY =  6 
Public Const ERROR_INVALID_PARAMETER =  7 
Public Const ERROR_ACCESS_DENIED =  8 
Public Const ERROR_INVALID_PARAMETERS =  87 
Public Const ERROR_NO_MORE_ITEMS =  259 

Public Const KEY_ALL_ACCESS = &H3F

Public Const REG_OPTION_NON_VOLATILE =  0 

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKeyEx Lib "advapi32.dll" 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, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" 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 RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long) As Long
Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Long, lpcbData As Long) As Long
Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long
Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long
Declare Function RegDeleteKey& Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String)
Declare Function RegDeleteValue& Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String)



если задаю Public Const ERROR_SUCCESS = 5, то просто ничего не происходит, если Public Const ERROR_SUCCESS = 0 то мессадж.

пока не понял(
...
Рейтинг: 0 / 0
реестр. читаем все ключи в ветке
    #37396895
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
    Dim KEY_READ As Long

вот интересно, для кого я здесь даю советы???
разбирайся сам
спокойной ночи.
...
Рейтинг: 0 / 0
реестр. читаем все ключи в ветке
    #37396905
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Shocker.Pro , благодаря советам получилось, хоть и тупил.

Код: plaintext
1.
2.
3.
4.
5.
6.
Public Const KEY_NOTIFY = &H10&
Public Const KEY_ENUMERATE_SUB_KEYS = &H8&
Public Const KEY_QUERY_VALUE = &H1&
Public Const READ_CONTROL = &H20000
Public Const STANDARD_RIGHTS_READ = READ_CONTROL
Public Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY

спокойной ночи.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / реестр. читаем все ключи в ветке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]