Win7で実行されているVisual Basic 6でレジストリを読み取るときのエラー

registry vba windows-7
Win7で実行されているVisual Basic 6でレジストリを読み取るときのエラー

私は、家族の友人からVB6アプリケーションを継承しました。この友人は、いくつかの機能強化を行いたいと思っています。 私はVBで3年以上開発していません(現在、MS Dynamics Axで開発しています)。 +最近ハードウェアをアップグレードし、現在Win7を実行しています。 前回(約1年半前)このアプリで作業したのはWinXPプラットフォームで、すべて正常に機能していました。 Win7で(コードを介して)アプリを実行すると、レジストリから読み取ろうとするとエラーが発生します。 はい、管理者としてVBを実行しています。

レジストリから読み取るコードは次のとおりです。Public Function 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

終了機能

「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」です。

選択するのを忘れた参照またはコンポーネントはありますか? 誰かが解決策を手伝ってくれますか?

前もって感謝します。

  0  0


ベストアンサー

関数宣言が「VREG」と呼ばれる外部ライブラリからのインポートであることを確認すると、おそらく実際のライブラリ自体、つまり VREG.DLL。 残念ながら、これは一般的なライブラリではないようですので、自分で作成する必要があります。

ただし、幸いなことに、レジストリへのアクセスはそれほど難しくなく、裸のWindows APIだけで行うことができます。特に、VREG.DLLが通常のAPIにかなりの抽象化を追加していないようです。 以下の機能をご覧ください。

…​which you can use to easily re-write registry access, provided you
必要なDLLをどこからでも調達できない。

1


タイトルとURLをコピーしました