powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверка существует ли значение в реестре
65 сообщений из 65, показаны все 3 страниц
Проверка существует ли значение в реестре
    #38853115
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые профессионалы!
Хочу в проекте проверять есть ли в реестре определенная папка со значением. Например в разделе HKEY_LOCAL_MACHINE\SOFTWARE создаю папку test, в которой создаю строковый параметр test
Прочитал что для этого можно использовать метод - GetValue объекта My.Computer.Registry
В качестве примера указали вот это:
Код: vbnet
1.
2.
3.
If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\TestApp","TestValue", Nothing) Is Nothing Then
  MsgBox("Value does not exist.")
End If


Но когда тестирую код, выводит ошибку - "Необходим объект" и подсвечивает первую строку.
Попробовал сделать так:-
Код: vbnet
1.
2.
3.
If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\test","test", Nothing) Is Nothing Then
  MsgBox("Value does not exist.")
End If


Все равно - необходим объект
Укажите пожалуйста в чем промах
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853121
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronУкажите пожалуйста в чем промахв выборе форума для вопроса

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853132
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,
Пока писал в ту ветку, в которой вопрос не должен был быть - тему уже переместили :-)

Наверное, имеет смысл для начала проверить наличие папки test в реестре, а потом уже и значение извлекать.
Что-то вроде:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim SubKey As Object,readValue As Object
SubKey  = My.Computer.Registry.LocalMachine.OpenSubKey ("Software\test", True)
If not My.Computer.Registry.LocalMachine.OpenSubKey ("Software\test", True) is nothing then
readValue = My.Computer.Registry.LocalMachine.GetValue("FontColor","test", Nothing)
if not readValue is nothing then
    MsgBox("Value does not exist.")
end if
end if
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853137
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Почему же? Этот вопрос именно по Visual Basic.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853163
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronShocker.Pro,

Почему же? Этот вопрос именно по Visual Basic.потому что надо читать ПРАВИЛА ФОРУМА. Прочтите перед тем как задавать вопрос! перед тем, как задавать вопрос
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853213
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,

Папка test с параметром test создана в
vdekameronHKEY_LOCAL_MACHINE\SOFTWARE
пробую ваш код:-
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim SubKey As Object,readValue As Object
SubKey  = My.Computer.Registry.LocalMachine.OpenSubKey ("Software\test", True)
If not My.Computer.Registry.LocalMachine.OpenSubKey ("Software\test", True) is nothing then
readValue = My.Computer.Registry.LocalMachine.GetValue("FontColor","test", Nothing)
if not readValue is nothing then
    MsgBox("Value does not exist.")
end if
end if


Ошибка- необходим объект((
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853214
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЭтот вопрос именно по Visual BasicVB и VB.Net - разные вещи. Поэтому и разделы разные. Ваш топик перенесли в нужную ветку, в которой именно Net обсуждается.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853218
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristVB и VB.Net - разные вещи. Поэтому и разделы разные. Ваш топик перенесли в нужную ветку, в которой именно Net обсуждается.
Уже понял, извините. Но все-равно не получается. Отписал выше(
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853223
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
Dim SubKey As Object,readValue As Object
SubKey  = My.Computer.Registry.LocalMachine.OpenSubKey ("Software\test", True)
If SubKey is nothing then
readValue = My.Computer.Registry.LocalMachine.GetValue("Software\test","test", Nothing)
if not readValue is nothing then
    MsgBox("Value does not exist.")
end if
end if
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853224
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально проверил - код выше работает. Никаких объектов не требует. Может редактор подсвечивает какое-то определенное свойство?
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853227
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее так даже:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        Dim SubKey As Object, readValue As Object
        SubKey = My.Computer.Registry.LocalMachine.OpenSubKey("Software\test", True)
        If Not SubKey Is Nothing Then
            readValue = My.Computer.Registry.LocalMachine.GetValue("Software\test", "test", Nothing)
            If Not readValue Is Nothing Then
                MsgBox("Value does not exist.")
            End If
        End If
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853272
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,

Вот что у меня получается.
Ошибка -Необходим объект и подсвечивается вторая строка
Код: vbnet
1.
SubKey = My.Computer.Registry.LocalMachine.OpenSubKey("Software\test", True)


Сделал скрин. Извините что низкого качества.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853280
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"SOFTWARE\test"
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853286
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronThe_PristVB и VB.Net - разные вещи. Поэтому и разделы разные. Ваш топик перенесли в нужную ветку, в которой именно Net обсуждается.
Уже понял , извините. Но все-равно не получается. Отписал выше(

Что именно понял? Судя по скрину, вы пытаетесь этот код использовать в Visual Basic

Я же дал ссылку на правила , но вы все равно не удосужились прочитать даже самую крупную и жирную строчку
Magnus23 Не забывайте указывать в своих темах среду разработки, к которой относится ваш вопрос!

Приведенный код - для VB.NET, вы бы сразу получили ответ, что вы пытаетесь использовать не тот язык, если бы указали, где вы пытаетесь его использовать
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853287
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

забирай ТС назад.
Он не ошибся форумом.

vdekameron,

то что ты пишешь My.Computer.Registry -это .Net коды и в VB6 они работать не будут.
В VB6 -то что ты хочешь - только API.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853292
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что за бред тут ТС пишет, код выаолняет в средстве просмотра фотографий.

вам VBA видимо нужно, тогда ищите примеры для него через WinAPI
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853294
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Shocker.Pro,

забирай ТС назад."Фарш невозможно провернуть назад,
И мясо из котлет не восстановишь..."
(на мотив песни "Старинные Часы")

Это теперь только местный модератор может сделать

Дим, просто дай ему правильный ответ, ну или ссылку )
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853302
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На. Декларации и константы выписывать лень, учись сам.


Код: vbnet
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.
Public Function IsRegistryKeyExists(ByVal hKey As Long, ByVal lpszSubKey As String, _
 Optional ByVal reg64 As Boolean = False) As Boolean
  Dim dwRes As Long
  Dim phkResult As Long
  
  If reg64 Then
    dwRes = RegOpenKeyEx(hKey, lpszSubKey, 0, KEY_QUERY_VALUE Or KEY_WOW64_64KEY, phkResult)
  Else
    dwRes = RegOpenKeyEx(hKey, lpszSubKey, 0, KEY_QUERY_VALUE, phkResult)
  End If
  If dwRes <> ERROR_FILE_NOT_FOUND Then IsRegistryKeyExists = True
  If phkResult <> 0 Then RegCloseKey phkResult
End Function

Public Function IsRegistryValueExists(ByVal hKey As Long, ByVal lpszSubKey As String, _
 ByVal szValueName As String, _
 Optional ByRef lpType As Long, Optional ByRef szValue As String = "", _
 Optional ByVal reg64 As Boolean = False) As Boolean
  'возвращает True если Value существует в реестре
  'lptype -возвращает тип Value (если существует)
  'szValue -возвращает значение Value (если существует и REG_SZ)
 
  Dim dwRes As Long
  Dim phkResult As Long
  Dim wIndex As Long
  Dim cchValue As Long
  Dim achValue As String
  
  'Open the key
  If reg64 Then
    dwRes = RegOpenKeyEx(hKey, lpszSubKey, 0, KEY_QUERY_VALUE Or KEY_WOW64_64KEY, phkResult)
  Else
    dwRes = RegOpenKeyEx(hKey, lpszSubKey, 0, KEY_QUERY_VALUE, phkResult)
  End If
  If dwRes <> ERROR_SUCCESS Then
    'Debug.Print "RegOpenKeyEx Error " & RaiseAPIErrorByNumber(dwRes)
    Exit Function
  End If
  
  wIndex = 0
  achValue = String(MAX_VALUE_NAME, 0)
  Do
    cchValue = MAX_VALUE_NAME
    'запрос только имени Value
    dwRes = RegEnumValue(phkResult, wIndex, achValue, cchValue, 0, lpType, vbNullString, 0)
    If dwRes = ERROR_NO_MORE_ITEMS Then
      Exit Do
    ElseIf dwRes <> ERROR_SUCCESS Then
      'Debug.Print "RegEnumValue Error " & RaiseAPIErrorByNumber(dwRes)
      Exit Do
    End If
    
    If UCase(Left(achValue, cchValue)) = UCase(szValueName) Then
      IsRegistryValueExists = True
      If lpType = REG_SZ Then 'для REG_SZ требуем значение
        Dim lpcbData As Long
        'запрос длины значения Value
        dwRes = RegEnumValue(phkResult, wIndex, achValue, cchValue, 0, lpType, szValue, lpcbData)
        If dwRes = ERROR_MORE_DATA Then
          'запрос самого значения Value
          szValue = String(lpcbData, 0)
          dwRes = RegEnumValue(phkResult, wIndex, achValue, cchValue, 0, lpType, szValue, lpcbData)
          szValue = Left(szValue, InStr(szValue, Chr(0)) - 1)
        End If
      End If
      Exit Do
    End If
    
    wIndex = wIndex + 1
  Loop
  
  RegCloseKey phkResult
  
End Function
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853321
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в принципе, жалко что ли.

Код: vbnet
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.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
Option Explicit

Public Const MAX_VALUE_NAME = 16383

'Registry Constants
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 HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006

'masks for the predefined standard access types
Public Const ADS_RIGHT_DELETE = &H10000
Public Const ADS_RIGHT_READ_CONTROL = &H20000
Public Const ADS_RIGHT_WRITE_DAC = &H40000
Public Const ADS_RIGHT_WRITE_OWNER = &H80000

Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const SPECIFIC_RIGHTS_ALL = &HFFFF
Public Const STANDARD_RIGHTS_READ = ADS_RIGHT_READ_CONTROL
Public Const STANDARD_RIGHTS_WRITE = ADS_RIGHT_READ_CONTROL
Public Const STANDARD_RIGHTS_REQUIRED = _
 ADS_RIGHT_DELETE Or ADS_RIGHT_READ_CONTROL Or ADS_RIGHT_WRITE_DAC Or ADS_RIGHT_WRITE_OWNER

'Registry Specific Access Rights
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_CREATE_LINK = &H20
Public Const KEY_READ = &H20019
'(использовалось в модуле от AsProtect, значение совпадает)
'Public Const KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + ADS_RIGHT_READ_CONTROL
'(msdn, значение совпадает)
'Public Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
'(было использовано в preinstall.exe, значение совпадает)
'Public Const SYNCHRONIZE = &H100000
'Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or _
'                  KEY_QUERY_VALUE Or _
'                  KEY_ENUMERATE_SUB_KEYS Or _
'                  KEY_NOTIFY) And _
'                  (Not SYNCHRONIZE))
Public Const KEY_WRITE = &H20006
'(msdn, значение совпадает)
'Public Const KEY_WRITE = STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY
Public Const KEY_EXECUTE = KEY_READ
'(использовалось во всех моих модулях реестра)
Public Const KEY_ALL_ACCESS = &H3F
'(msdn, значение не совпадает)
'Public Const KEY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or KEY_QUERY_VALUE Or _
'                              KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
'                              KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK

'новые ключи для доступа к 64-х битному реестру!
Public Const KEY_WOW64_64KEY = &H100
Public Const KEY_WOW64_32KEY = &H200

'Open/Create Options
Public Const REG_OPTION_NON_VOLATILE = 0& ' Key is preserved when system is rebooted
Public Const REG_OPTION_VOLATILE = &H1
Public Const REG_OPTION_BACKUP_RESTORE = 4

'Key creation/open disposition
Public Const REG_CREATED_NEW_KEY = &H1
Public Const REG_OPENED_EXISTING_KEY = &H2

'Define severity codes
Public Const ERROR_SUCCESS = 0&
Public Const ERROR_FILE_NOT_FOUND = 2
Public Const ERROR_ACCESS_DENIED = 5
Public Const ERROR_INVALID_PARAMETER = 87
Public Const ERROR_INSUFFICIENT_BUFFER = 122&
Public Const ERROR_MORE_DATA = 234
Public Const ERROR_NO_MORE_ITEMS = 259
Public Const ERROR_NOT_ALL_ASSIGNED = 1300

'Predefined Value Types

'No value type
Public Const REG_NONE = (0)
'Unicode nul terminated string
Public Const REG_SZ = (1)
'Unicode nul terminated string w/enviornment var
Public Const REG_EXPAND_SZ = (2)
'Free form binary
Public Const REG_BINARY = (3)
'32-bit number
Public Const REG_DWORD = (4)
'32-bit number (same as REG_DWORD)
Public Const REG_DWORD_LITTLE_ENDIAN = (4)
'32-bit number
Public Const REG_DWORD_BIG_ENDIAN = (5)
'Symbolic Link (unicode)
Public Const REG_LINK = (6)
'Multiple Unicode strings
Public Const REG_MULTI_SZ = (7)
'Resource list in the resource map
Public Const REG_RESOURCE_LIST = (8)
'Resource list in the hardware description
Public Const REG_FULL_RESOURCE_DESCRIPTOR = (9)
Public Const REG_RESOURCE_REQUIREMENTS_LIST = (10)

'Structures Needed For Registry Prototypes
Public Type SECURITY_ATTRIBUTES
  nLength As Long
  lpSecurityDescriptor As Long
  bInheritHandle As Boolean
End Type

'Registry Functions
Public Declare Function RegCloseKey Lib "advapi32" _
 (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public 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 Declare Function RegDeleteKey Lib "advapi32.dll" Alias _
 "RegDeleteKeyA" (ByVal hKey As Long, ByVal _
 lpSubKey As String) As Long
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias _
 "RegDeleteValueA" (ByVal hKey As Long, ByVal _
 lpValueName As String) As Long
Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias _
 "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex _
 As Long, ByVal lpName As String, lpcName _
 As Long, ByVal lpReserved As Long, ByVal _
 lpClass As String, lpcClass As Long, _
 lpftLastWriteTime As FILETIME) As Long
Public Declare Function RegEnumValue Lib "advapi32.dll" Alias _
 "RegEnumValueA" (ByVal hKey As Long, ByVal _
 dwIndex As Long, ByVal lpValueName As String, _
 lpcchValueName As Long, ByVal lpReserved As _
 Long, lpType As Long, ByVal lpData As String, _
 lpcbData As Long) As Long
Public 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
'Public Declare Function RegQueryValueEx Lib "advapi32" Alias _
' "RegQueryValueExA" (ByVal hKey As Long, ByVal _
' lpValueName As String, ByVal lpReserved As Long, _
' ByRef lpType As Long, ByVal lpData As String, _
' ByRef lpcbData As Long) As Long
Public Declare Function RegQueryValueEx& Lib "advapi32" Alias "RegQueryValueExA" ( _
 ByVal hKey&, _
 ByVal lpValueName$, _
 ByVal lpReserved%, _
 Optional lpType&, _
 Optional ByVal lpData$, _
 Optional lpcbData&)
Public Declare Function RegQueryValueExBin 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

Public Const REG_FORCE_RESTORE = 8&

Public Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" _
 (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
 
Public Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" _
 (ByVal hKey As Long, ByVal lpFile As String, _
 Optional ByVal lpSecurityAttributes As Long) As Long
 
Public Const REG_STANDARD_FORMAT = 1
Public Const REG_LATEST_FORMAT = 2
Public Const REG_NO_COMPRESSION = 4
 
Public Declare Function RegSaveKeyEx Lib "advapi32.dll" Alias "RegSaveKeyExA" _
 (ByVal hKey As Long, ByVal lpFile As String, _
 ByVal lpSecurityAttributes As Long, ByVal Flags As Long) As Long
 
Public Declare Function RegSetValueEx Lib "advapi32" Alias _
 "RegSetValueExA" (ByVal hKey As Long, ByVal _
 lpValueName As String, ByVal Reserved As Long, _
 ByVal dwType As Long, ByVal lpData As String, _
 ByVal cbData As Long) As Long
Public Declare Function RegSetDWORDValueEx Lib "advapi32" Alias "RegSetValueExA" ( _
 ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
 ByVal dwType As Long, lpData As Long, Optional ByVal cbData As Long = 4) As Long
 
'Shell Lightweight Utility Functions
Public Declare Function SHCopyKey Lib "Shlwapi.dll" Alias "SHCopyKeyA" _
 (ByVal hKeySrc As Long, ByVal pszSrcSubKey As String, _
 ByVal hKeyDest As Long, ByVal fReserved As Long) As Long
Public Declare Function SHDeleteKey Lib "Shlwapi.dll" Alias "SHDeleteKeyA" _
 (ByVal hKey As Long, ByVal pszSubkey As String) As Long

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


Shocker.ProCудя по скрину, вы пытаетесь этот код использовать в Visual Basic

Если я изначально создал тему в разделе по Visual Basic ,то таки ДА!! я пытаюсь этот код использовать в Visual Basic
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853362
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77,

Это пиз...ц Дмитрий, мне чтобы проверить есть ли в Local_Mashine\Software папка test нужно ввести то, что вы последнее скинули?
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853367
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

я тебе дал полный код на VB6 . Другого кода там быть не может.
Можешь еще пытаться читать value и сравнивать с дефолтной.

Код: vbnet
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.
'------------------------------------------------------------
'Get the value of the key
'------------------------------------------------------------
Public Function GetRegValue(hKey As Long, lpszSubKey As String, _
 szKey As String, szDefault As String, reg64 As Boolean) As Variant

  On Error GoTo ErrorRoutineErr:

  Dim phkResult As Long
  Dim lResult As Long
  Dim szBuffer As String
  Dim lBuffSize As Long

  'Create Buffer
  'szBuffer = Space(1000)
  'lBuffSize = Len(szBuffer)

  'Open the key
  If reg64 Then
    RegOpenKeyEx hKey, lpszSubKey, 0, 1 Or KEY_WOW64_64KEY, phkResult
  Else
    RegOpenKeyEx hKey, lpszSubKey, 0, 1, phkResult
  End If

  'Query lBuffSize
  'lResult = RegQueryValueEx(phkResult, szKey, 0, 0, 0, lBuffSize)
  lResult = RegQueryValueEx(phkResult, szKey, 0, , , lBuffSize)
  'Debug.Print "lResult=" & lResult & ";lBuffSize=" & lBuffSize
  'If lResult = ERROR_MORE_DATA Then
  If lResult = ERROR_SUCCESS Then
    'Create buffer
    szBuffer = Space(lBuffSize)
    'Query the value
    'lResult = RegQueryValueEx(phkResult, szKey, 0, 0, szBuffer, lBuffSize)
    lResult = RegQueryValueEx(phkResult, szKey, 0, , szBuffer, lBuffSize)
    'Debug.Print "lResult=" & lResult & ";lBuffSize=" & lBuffSize

    'Close the key
    RegCloseKey phkResult

    'Return obtained value
    If lResult = ERROR_SUCCESS Then
      GetRegValue = Left(szBuffer, lBuffSize - 1)
    Else
      GetRegValue = szDefault
    End If
  Else
    'Close the key
    RegCloseKey phkResult
    GetRegValue = szDefault
  End If
  Exit Function

ErrorRoutineErr::
  'MsgBox "ERROR #" & str$(Err) & " : " & Error & Chr(13) _
  '     & "Please exit and try again."
  GetRegValue = ""
End Function

Но первый вариант правильнее.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853368
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77,

Вот еще один человек, который меня переоценил на этом форуме. Первый был Shocker.Pro ))
Если это можно просто вставить то другой разговор. но я ни разу не встретил там имя папки - test
Емае)) мне просто нужно проверять есть ли папочка, а кода на 2 ласта)))
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853371
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЕсли я изначально создал тему в разделе по Visual Basic ,то таки ДА!! я пытаюсь этот код использовать в Visual Basicно при этом, привели код для VB.NET, потому я и перекинул тему.
vdekameronЭто пиз...ц Дмитрий, мне чтобы проверить есть ли в Local_Mashine\Software папка test нужно ввести то, что вы последнее скинули?Да, а, собственно, какая вам разница, что внутри функции, вы же не пытаетесь выяснить, что внутри функции My.Computer.Registry.GetValue. Условно говоря, что-то похожее )
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853378
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,


Shocker.Proно при этом, привели код для VB.NET, потому я и перекинул тему

Полюбуйтесь откуда я взял этот код

Я же руководствуюсь тем, что вы же мне и советовали. Сначала поискать в интернете, почитать, поискать самому. А уж потом отнимать у вас время! Вот поискал, там черным по белому написан заголовок-
"Практическое руководство. Чтение значения из раздела реестра в Visual Basic"
Потестил сам. Не получилось. Написал сюда.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853380
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853381
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853384
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЭто пиз...ц:-
А ты как хотел?
Не нравится - тогда добро пожаловать в "чиста .Net".
Тем более "чиста код" для "чиста .Net" ты уже уже написал.
Если не брать ньюансы с syswow64 то Net.-овская обертка для реестра на мой взгляд достаточно хороша.

Shocker.Pro,
>Да, а, собственно, какая вам разница, что внутри функции,
Ну, ты ж понимаешь что с таким подходом к API тоже далеко не уедешь.
Это только Ципиховичу наверно дано. Шутка.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853385
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

...так все-таки, это VB.NET ... да? или VB.DA?
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853388
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77

Очень вас прошу, измените пожалуйста код с учетом того что я хочу проверить просто есть ли папка "test" в
разделе LOCAL_MACHINE\SOFTWARE. Если нет то msgbox " гудбай " , но это я и сам смогу
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853389
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronShocker.Pro,

http://msdn.microsoft.com/ru-ru/library/xz88758e.aspx

Ай-я-яй, Visual Studio 2013 не смутило?
Это при том что крайняя версия VB6 вышла в 1998г.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853391
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik,

Да тут наверное уже весь форум понял что мне нужно на VB6
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853394
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПолюбуйтесь откуда я взял этот код

http://msdn.microsoft.com/ru-ru/library/xz88758e.aspx
любуюсь. Там синим по белому написана версия студии
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853396
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77,


Дмитрий77Ай-я-яй, Visual Studio 2013 не смутило?

Прошу прощения.
Топик прочитал и дальше глазами сразу на объяснение
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853398
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,


Shocker.Pro


Ну лишний раз доказывает что спорить с вами нет смысла)) Все-равно останешься виноват))
Извините, ступил!
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853399
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronОчень вас прошу, измените пожалуйста код с учетом того что я хочу проверить просто есть ли папка "test" в
разделе LOCAL_MACHINE\SOFTWARE. Если нет то msgbox " гудбай " , но это я и сам смогуЭтот код менять не надо. Этот код - просто функции для использования вами. Вы их кладете свой проект, не вникая, что у них внутри и просто пользуетесь ими
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853401
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronНу лишний раз доказывает что спорить с вами нет смысла)) Все-равно останешься виноват))
Извините, ступил!зато в следующий раз уже знаете, куда смотреть
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853404
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня VB6 проект. Кто-то может скинуть именно для проверки наличия/отсутствия папки "test" в разделе реестра LOCAL_MASHINE\SOFTWARE.
Ибо скажу честно что не разберусь сам куда и что вопхнуть в тот код который Дмитрий не поленился скинуть.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853415
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronУ меня VB6 проект. Кто-то может скинуть именно для проверки наличия/отсутствия папки "test" в разделе реестра LOCAL_MASHINE\SOFTWARE.
Ибо скажу честно что не разберусь сам куда и что вопхнуть в тот код который Дмитрий не поленился скинуть.Нужно создать в проекте модуль и положить в него текст Дмитрия. Сначала второй (объявления), потом первый (функции)

Всё, вы имеете две функции IsRegistryValueExists и IsRegistryKeyExists, которые возвращают Boolean - можете их использовать в своем проекте как и любые другие функции. Их назначение - ну уж попробуйте перевести с английского с помощью гугла их названия.

Как вызывать функции - ну это уже азы - читайте первые страницы учебника
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853416
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronчто вопхнуть в тот код который .
Код: vbnet
1.
2.
3.
If IsRegistryValueExists(HKEY_LOCAL_MACHINE, "SOFTWARE\test", "TestValue") = False Then
  MsgBox("Value does not exist.")
End If
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853452
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще вполне можно считать и без привлечения API напрямую:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub GetKey()
    Dim WshShell As Object, rTestF
    Set WshShell = CreateObject("WScript.Shell")
    On Error Resume Next
    rTestF = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\test\test")
    If IsEmpty(rTestF) Then
        MsgBox "Указанный раздел или ключ в реесте отсутствует"
    End If
End Sub



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

Уважаемые спецы!
1) Как вызвать функцию уже знаю да и Дмитрий уже написал
2) Создал Модуль - Проект1- добавить модуль-Модуль1
3) В него вписал объявления( второй код, который скинул Дмитрий) сразу за ним первый-функции
4) В окне кода формы проекта написал
Код: vbnet
1.
2.
3.
If IsRegistryValueExists(HKEY_LOCAL_MACHINE, "SOFTWARE\test", "TestValue") = False Then
  MsgBox("Value does not exist.")
End If


5) Делаю F8 чтобы полюбоваться результатом
Но болт. Ошибка- User-defined type not defined и синим подсвечивает строку кода-
Код: vbnet
1.
2.
3.
4.
5.
6.
Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias _
 "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex _
 As Long, ByVal lpName As String, lpcName _
 As Long, ByVal lpReserved As Long, ByVal _
 lpClass As String, lpcClass As Long, _
 lpftLastWriteTime As FILETIME) As Long
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853474
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
Public Type FILETIME
    LowPart As Long
    HighPart As Long
End Type


нет видимо в описании
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853477
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
Public Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853479
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

Мой вариант не прокатывает?
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853487
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,

Боже! Я женат и у меня есть сын и я очень даже правильной ориентации. Но я готов вас расцеловать)))
Где же вы были в самом начале )))
Объясните в чем подвох)) Нахрена создавать модули вписывать кучу объявлений, функций, если можно 10 строчками кода выполнить проверку.
Ну по-любому Дмитрий не просто так скинул почти книгу кода)
Где эти 10 строк The_Prist могут вылезти боком, если я их возьму за основу)
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853492
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronОбъясните в чем подвохThe_Prist просто использует дополнительную прокладку к тому, что Дмитрий использует напрямую, поэтому кажется, что кода меньше. Вариант Дмитрия прямее и быстрее, но для вас, в общем-то, это непринципиально.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853496
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

А как ваш код прокатит. если у ТС VB6?
Или я чего то не допонял?
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853498
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Добавил
Код: vbnet
1.
2.
3.
4.
Public Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type


Итог-срабатывает MsgBox ("Value does not exist.")
хотя повторюсь что HKEY_LOCAL_MACHINE, "SOFTWARE\test" со строковым параметром test существует
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853499
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronГде эти 10 строк The_Prist могут вылезти боком, если я их возьму за основуНе должны. Не встречал пока такого случая. Вам явно проще будет использовать такой код, чем API напрямую.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853502
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77А как ваш код прокатит. если у ТС VB6?
Или я чего то не допонял?

Сорри!!! Но у ТС именно VB6 и все прокатило!
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853503
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77А как ваш код прокатит. если у ТС VB6?
Или я чего то не допонял?
Так же, как и из под VBA. Используется позднее связывание с Shell и никаких заморочек нет.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853505
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

сорри, не заметил ваш более позний пост
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853506
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristНе должны. Не встречал пока такого случая. Вам явно проще будет использовать такой код, чем API напрямую.

Огроменнейшее СПАСИБО!!! А то уже башка разболелась. Рыщу в нете, может там есть а хренушки....везде приводят пример с API напрямую!
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853507
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77,

Ну а все-таки. Почему срабатывает msgbox если директория имеет место быть!!
17112543
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853508
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronИтог-срабатывает MsgBox ("Value does not exist.")
хотя повторюсь что HKEY_LOCAL_MACHINE, "SOFTWARE\test" со строковым параметром test существуета TestValue на test вы поменяли?
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853509
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

.. может, вам для ваших задач проще VBS использовать, а не 6 ..?
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853511
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronсо строковым параметром test существует
У меня там "testvalue" а не "test" написано, в ф-ции у меня ошибки точно нет.
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853515
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа TestValue на test вы поменяли?

Хм...вопрос снят. Арбайтен и с Api напрямую и с вариантом для таких как я, который The_Prist подкинул
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38853519
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik.. может, вам для ваших задач проще VBS использовать, а не 6 ..?
Да уже разобрался, вернее тупо написали что да куда) А разбираться буду сейчас, но все работает
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38855039
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот еще надыбал как записать раздел в реестр и стереть. Может кому-то понадобится)) Не через Api
Код: vbnet
1.
2.
3.
4.
5.
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\NewKey\", "Value"
WshShell.RegWrite "HKEY_CURRENT_USER\NewKey\Param", "Value", "REG_SZ"
WshShell.RegDelete "HKEY_CURRENT_USER\NewKey\Param"
WshShell.RegDelete "HKEY_CURRENT_USER\NewKey\"
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38855107
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronВот еще надыбал как записать раздел в реестр и стереть. Может кому-то понадобится)) Не через Api


... я вам о VBS именно поэтому и заметил ...
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38855238
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik... я вам о VBS именно поэтому и заметил ...

Так я именно в BV6 это делал а не в VBS
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38855257
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameroncarrotik... я вам о VBS именно поэтому и заметил ...

Так я именно в BV6 это делал а не в VBS

...я говорю о том, что подобные задачи решаются скриптом на VBS, написанным в блокноте, с тем же успехом ... просто для каждого набора задач есть свои инструменты ...
...
Рейтинг: 0 / 0
Проверка существует ли значение в реестре
    #38855435
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

в VB6 можно точно так же создать объект "WScript.Shell" и вызывать все его методы.
...
Рейтинг: 0 / 0
65 сообщений из 65, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверка существует ли значение в реестре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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