他端末のレジストリ情報を取得 <TOP>
RegConnectRegistry ほかのコンピュータ上の定義済みレジストリハンドルとの接続を確立
RegCloseKey レジストリのハンドルを解放
RegOpenKeyEx レジストリのキーのハンドルを確保
RegQueryValueEx レジストリの値を取得
'================================================================ '= 他端末のレジストリ情報を取得 '= (RegConnectRegistry2.bas) '================================================================ #include "Windows.bi" #define HKEY_CLASSES_ROOT -2147483648 '拡張子に関する情報や、それらとアプリケーションとの関連づけに関する情報 #define HKEY_CURRENT_USER -2147483647 '現在Windowsにログインしているユーザーの情報 #define HKEY_LOCAL_MACHINE -2147483646 'PCを利用するユーザーに共通の設定情報 #define HKEY_USERS -2147483645 'Windowsを利用するユーザー個別の情報 #define KEY_QUERY_VALUE &H1 'サブキーデータを問い合わせるためのアクセス権 #define KEY_SET_VALUE &H2 'サブキーデータの設定を許可 #define KEY_ALL_ACCESS &H3F 'レジストリに対するすべての権限を許可 #define REG_SZ 1 'ヌル終端文字列 #define ERROR_SUCCESS &H0 '正常終了の戻り値を示す ' ほかのコンピュータ上の定義済みレジストリハンドルとの接続を確立 Declare Function Api_RegConnectRegistry& Lib "advapi32" Alias "RegConnectRegistryA" (ByVal lpMachineName$, ByVal hKey&, phkResult&) ' レジストリのハンドルを解放 Declare Function Api_RegCloseKey& Lib "advapi32" Alias "RegCloseKey" (ByVal hKey&) ' レジストリのキーのハンドルを確保 Declare Function Api_RegOpenKeyEx& Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey&, ByVal lpSubKey$, ByVal ulOptions&, ByVal samDesired&, phkResult&) ' レジストリの値を取得 Declare Function Api_RegQueryValueEx& Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey&, ByVal lpvName$, ByVal lpReserved&, lpType&, ByVal lpData$, lpcbData&) Var Shared Edit1 As Object Var Shared Edit2 As Object Var Shared Text1 As Object Var Shared Button1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Edit2.Attach GetDlgItem("Edit2") : Edit2.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared hRemoteReg As Long '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hKey As Long Var sValue As String Var RemoteName As String Var KeyName As String Var Ret As Long RemoteName = Edit1.GetWindowText 'リモート端末の接続(空文字の場合はローカルコンピューター) Ret = Api_RegConnectRegistry(RemoteName, HKEY_LOCAL_MACHINE, hRemoteReg) If (Ret = ERROR_SUCCESS) Then Text1.SetWindowtext "接続されました!" Else Text1.SetWindowtext "エラー!" If hRemoteReg <> 0 Then Ret = Api_RegCloseKey(hRemoteReg) End If Exit Sub End If Wait 50 KeyName = Edit2.GetWindowText Ret = Api_RegOpenKeyEx(hRemoteReg, "HARDWARE\DESCRIPTION\System", 0, KEY_QUERY_VALUE, hKey) If Ret <> ERROR_SUCCESS Then Text1.SetWindowtext "オープンできません!" Else sValue = String$(255, " ") Ret = Api_RegQueryValueEx(hKey, KeyName, 0&, REG_SZ, sValue, 255) If Ret <> ERROR_SUCCESS Then Text1.SetWindowtext "取得できません!" Else Text1.SetWindowtext sValue End If Ret = Api_RegCloseKey(hKey) If Ret <> ERROR_SUCCESS Then Text1.SetWindowtext "クローズできません!" End If End If End Sub '================================================================ '= '================================================================ Declare Sub Edit1_Change edecl () Sub Edit1_Change() Text1.SetWindowText "" End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End