プロが教えるわが家の防犯対策術!

あるアプリケーションソフトのレジストリ情報を VBA(Excel97 に付いてきた)にてGETしたいので"GetSetting関数"を使用すると
[HKEY_USERS]-[Default]-[Software]-[VB and VBA Program Settings] の下の情報しかGET出来ません。
欲しい情報は、例えば [HKEY_USERS]-[Default]-[Software]-[ODBC]-[ODBC.INI]-[Excel Files] の Driverの値です。
やはりDLLを作成するしか無いのでしょうか??
誰か教えて下さい。出来れば、簡単ならコマンドを記載orHPの紹介でも良いです。ヒントだけでも、本の紹介でも構いません。アドバイス下さい。
お願い致します。

A 回答 (2件)

GETしたい情報は 文字列?バイナリ?DWORD値?とりあえず、


文字列と想定して(勝手に)↓

Private Declare Function RegCloseKey Lib "ADVAPI32" (ByVal hKey As Long) As Long
Private 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
Private Declare Function RegQueryValueExstr Lib "ADVAPI32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByVal lpType As Long, ByVal lpDat As String, lpcbData As Long) As Long

Const HKEY_USERS = &H80000003
Const ERROR_SUCCESS = 0&


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Sub Samp()

Dim A As String
Dim B As Long
Dim Name As String
Dim Rootkey As String
Dim Subkey As String
Dim C As Long
Dim D As Integer

Rootkey = HKEY_USERS
Subkey = ".Default\Software\ODBC\ODBC.INI\Excel Files"
Ret = RegOpenKeyEx(Rootkey, Subkey, 0, 1, C)
Name = "Driver"
A = String(250, Chr(0))
B = Len(A)
D = RegQueryValueExstr(C, Name, 0, 0, A, B)
If D = ERROR_SUCCESS Then
MsgBox A
Else
MsgBox "NG"
End If
Call RegCloseKey(C)
End Sub

で、取得出来ると思いますが・・・ただしExcel2000のVBAで動作確認です。
趣旨が間違っていればごめんなさい m(_ _)m
    • good
    • 0
この回答へのお礼

おりがとうございます。m(__)m Excel97のVBAでも動作いたしました。助かりました。本当に、ありがとうございました。

お礼日時:2001/05/25 13:34

Win32APIのRegOpenKeyExやRegQueryValueExなどを使いましょう。


VBやVBAから使う場合は、DeclareでDLLの中の関数を宣言する必要があります。
APIビューアがあれば便利なんですが。
とりあえず、検索してみましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!