Ошибка при чтении реестра с Visual Basic 6, работающей на Win7 - PullRequest
0 голосов
/ 08 октября 2010

Я унаследовал приложение VB6 от друга члена семьи, который хочет внести в него некоторые улучшения.Я не разрабатывал в VB более 3 лет (сейчас я занимаюсь разработкой в ​​MS Dynamics Axe).
Я недавно обновил свое оборудование и теперь использую Win7.Последний раз, когда я работал с приложением (около полутора лет назад), был на платформе WinXP, и все работало нормально.Теперь, когда я запускаю приложение (через код) на Win7, я получаю сообщение об ошибке при попытке чтения из реестра.Да, я использую VB от имени администратора.

Код для чтения из реестра: Открытая функция sReadRegistry (ByVal hKeyRoot As Long, _ ByVal sSubKey As String, _ ByVal sValueName As String) As String

Dim r As Long
Dim sData As String * 255
Dim lDataSize As Long
Dim sTempVal As String
Dim readValue As String

lDataSize = 255

'Get the Value Requested
lDataSize = 255
r = VRegReadString(hKeyRoot, sSubKey, sValueName, sData, lDataSize)
If r Then
    sTempVal = ""
Else
    sTempVal = Left$(sData, lDataSize - 1)
End If

sReadRegistry = sTempVal

End Function

«VRegReadString» объявлен внутри модуля;и объявляется следующим образом:

Declare Function VRegReadString Lib "VREG" (ByVal hKeyRoot As Long, ByVal sSubKey As String, ByVal sValueName As String, ByVal sData As String, ByRef lDataSize As Long) As Long

Он жалуется на библиотеку «VREG»… Я получаю ошибку: «Файл не найден: VREG».

Есть ссылка или компонентчто я забыл выбрать?Может кто-нибудь помочь с решением?

Заранее спасибо.

1 Ответ

1 голос
/ 08 октября 2010

Видя, что объявление функции является импортом из внешней библиотеки с именем «VREG», вы, вероятно, упускаете саму саму библиотеку, то есть VREG.DLL.К сожалению, это, похоже, не обычная библиотека, поэтому вам придется придумать ее самостоятельно.

Хорошая новость заключается в том, что получить доступ к реестру не очень сложно, и это можно сделать, простоAPI-интерфейс Windows, особенно учитывая, что VREG.DLL не добавляет абстракции обычному API-интерфейсу.Взгляните на эти функции:

Функции реестра

... которые вы можете использовать для простого перезаписи доступа к реестру, если вы не смогли приобрести необходимую DLLоткуда-то.

...