Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: WSH и реестр Добавлено: 01.04.04 08:05  

Автор вопроса:  Шпион | ICQ: 250543104 

Нужно "взять" все ключи определенной ветви реестра, скажем

HKLM\Software\Microsoft\Windows\CurrentVersion\Run

как сделать ?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 01.04.04 09:48

Возьми более менее полный файл работы с реестром, там есть уже готовое EnumKeys/EnumKeyValues, а далее используй рекурсию, дабы двигаться в подключи, и смотреть что там... если это надо, конечно же...

Ответить

Номер ответа: 2
Автор ответа:
 Шпион



ICQ: 250543104 

Вопросов: 13
Ответов: 118
 Профиль | | #2 Добавлено: 01.04.04 17:09

адрес скажи плиз

Ответить

Номер ответа: 3
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #3 Добавлено: 01.04.04 19:35
Похоже, тебе нужна VBRegTool6. Где я её скачивал - не помню, может и на этом сайте. Поищи. Это DLL.

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 02.04.04 11:28

Применительно к твоему вопросу - вот тебе примерчик. Кинь на форму ListBox и пару кнопочек.

'код формы

Option Explicit

Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName 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 Byte, lpcbData As Long) As Long

Private Const HKEY_LOCAL_MACHINE = &H80000002

Private Sub Command1_Click()

List1.Clear

Dim Ret As Long

Dim hKey As Long

Dim Counter As Long

Dim tmpString As String

Ret = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", hKey)

Do

tmpString = String(255, 0)

Ret = RegEnumKey(hKey, Counter, tmpString, 255)

If Ret <> 0 Then Exit Do

Counter = Counter + 1

List1.AddItem tmpString

Loop

Me.Caption = Ret

End Sub

Private Sub Command2_Click()

List1.Clear

Dim Ret As Long

Dim hKey As Long

Dim Counter As Long

Dim tmpString As String

Ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", hKey)

Do

tmpString = String(255, 0)

Ret = RegEnumValue(hKey, Counter, tmpString, 255, 0, ByVal 0&, ByVal 0&, ByVal 0&)

If Ret <> 0 Then Exit Do

Counter = Counter + 1

List1.AddItem tmpString

Loop

Me.Caption = Ret

End Sub

Private Sub Form_Load()

Command1.Caption = "Keys"

Command2.Caption = "Values"

End Sub

В подробностях, думаю, разберешься. Хочу лишь отметить декларацию RegEnumValue.

Она немного отличается от того, что в ApiViewer в VB, поскольку та некорректна и выдает ошибку 87. Читай MSDN...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам