レジストリキーに関する情報を取得(T) <TOP>
RegOpenKeyEx
レジストリのキーのハンドルを確保
RegQueryInfoKey
指定されたレジストリキーに関する情報を取得
RegCloseKey
レジストリのハンドルを解放
FileTimeToSystemTime
ファイルタイムをシステムタイムに変換
'================================================================ '= レジストリキーに関する情報を取得 '= (RegQueryInfoKey.bas) '================================================================ #include "Windows.bi" Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type #define HKEY_LOCAL_MACHINE -2147483646 'PCを利用するユーザーに共通の設定情報 #define KEY_QUERY_VALUE &H1 'サブキーデータを問い合わせるためのアクセス権 #define ERROR_SUCCESS &H0 '正常終了の戻り値を示す ' レジストリのキーのハンドルを確保 Declare Function Api_RegOpenKeyEx& Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey&, ByVal lpSubKey$, ByVal ulOptions&, ByVal samDesired&, phkResult&) ' 指定されたレジストリキーに関する情報を取得 Declare Function Api_RegQueryInfoKey& Lib "advapi32" Alias "RegQueryInfoKeyA" (ByVal hKey&, ByVal lpClass$, lpcbClass&, ByVal Reserved&, SubKeys&, SubKeyLen&, ClassLen&, Values&, ValueNameLen&, ValueLen&, SecurityDescriptor&, LastWriteTime As FILETIME) ' レジストリのハンドルを解放 Declare Function Api_RegCloseKey& Lib "advapi32" Alias "RegCloseKey" (ByVal hKey&) ' ファイルタイムをシステムタイムに変換 Declare Function Api_FileTimeToSystemTime& Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) Var Shared List1 As Object Var Shared Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 12 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var ft As FILETIME Var st As SYSTEMTIME Var RegSubKey As String Var RegSubKeyHandle As Long Var CbClass As Long Var SubKeys As Long Var SubKeyLength As Long Var ClassLength As Long Var Values As Long Var ValueNameLength As Long Var ValueLength As Long Var sFileTime As String Var Ret As Long 'リストボックスを初期化 List1.Resetcontent 'サブキーを設定 RegSubKey = "" 'レジストリを問い合わせモードでオープン Ret = Api_RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegSubKey, 0, KEY_QUERY_VALUE, RegSubKeyHandle) 'オープンできたとき If Ret = ERROR_SUCCESS Then '指定したキーのレジストリ情報を取得 Ret = Api_RegQueryInfoKey(RegSubKeyHandle, ByVal 0, CbClass, 0, SubKeys, SubKeyLength, ClassLength, Values, ValueNameLength, ValueLength, ByVal 0, ft) 'レジストリ情報が取得できたとき If Ret = ERROR_SUCCESS Then 'ファイル時間をシステム時間に変換 Ret = Api_FileTimeToSystemTime(ft, st) 'レジストリ情報を表示 List1.AddString "SubKey数 :" & Str$(SubKeys) List1.AddString "SubKey最大文字数 :" & Str$(SubKeyLength) List1.AddString "値の数 :" & Str$(Values) List1.AddString "値の最大文字数 :" & Str$(ValueNameLength) 'ファイルの最終書き込み日時を編集 sFileTime = Trim$(Str$(st.wYear)) & "/" & Trim$(Str$(st.wMonth)) & "/" & Trim$(Str$(st.wDay)) & "(" & KMid$("日月火水木金土", st.wDayOfWeek + 1, 1) & ") List1.AddString "最終書き込み日 : " & sFileTime sFileTime = Trim$(Str$(st.wHour)) & ":" & Trim$(Str$(st.wMinute)) & ":" & Trim$(Str$(st.wSecond)) List1.AddString "最終書き込み時間 : " & sFileTime 'レジストリ情報が取得できなかったとき Else List1.AddString "取得できません!" End If 'ハンドルをクローズ Ret = Api_RegCloseKey(RegSubKeyHandle) 'オープンできなかったとき Else List1.AddString "オープンできません!" End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End