53.レジストリのキーを列挙する




< 使用用途 >

レジストリのサブキーを列挙する

今回のサンプルソースをダウンロードする方は下記の「ダウンロード」を!
=> ダウンロード ・・・ 下に書いてあるサンプルソースと同じです


< 説明 >
API関数のRegEnumKeyExを使用します。
RegEnumKeyEx=>レジストリのサブキーを列挙する
  <引数>
    hKey&:レジストリのハンドル
    dwIndex&:インデックス
    lpName$:サブキー名が入る
    lpcbName:同、文字数
    lpReserved&:常に0
    lpClass$:常に0
    lpcbClass&:常に0
    lpftLastWriteTime:FILETIME構造体
  @戻り値@  
      正常終了のとき ERROR_SUCCESS
*レジストリのハンドルはRegOpenKeyExを参照


< SAMPLE >
'ここでは「HKEY_CURRENT_USER\Software」のサブキーを列挙します

'標準モジュール
Public Type FILETIME
dwLowDateTime As Long '下位32ビット
dwHighDateTime As Long'上位32ビッ
End Type

'指定のレジストリキーのサブキーを列挙する
Public Declare Function RegEnumKeyEx Lib "ADVAPI32" Alias "RegEnumKeyExA" (ByVal hKey&, ByVal dwIndex&, ByVal lpName$, lpcbName&, lpReserved&, ByVal lpClass$, lpcbClass&, lpftLastWriteTime As FILETIME) As Long

'レジストリのハンドルを解放する
Public Declare Function RegCloseKey Lib "ADVAPI32" (ByVal hKey&) As Long

'レジストリのキーを開ける(ハンドルの確保)
Public Declare Function RegOpenKeyEx Lib "ADVAPI32" Alias "RegOpenKeyExA" (ByVal hKey&, ByVal lpSubKey$, ByVal ulOptions&, ByVal samDesired&, phkResult&) As Long

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const ERROR_SUCCESS = 0&

'ここからはフォームの処理
Private Sub Command1_Click()

Dim Moji As String
Dim Nagasa As Long
Dim File As FILETIME
Dim i As Long
Dim Ret As Long

List1.Clear

  'バッファを確保する
  Moji = String(250, Chr(0))
  Nagasa = Len(Moji)

  'キーをオープンしてハンドルを得る
  Ret = RegOpenKeyEx(HKEY_CURRENT_USER, Text2.Text, 0, 1, Hensu)

 Do

  'サブキーを取得
  Ret = RegEnumKeyEx(Hensu, i, Moji, Nagasa, 0, 0, 0, File)

  'エラーだったらループを抜ける
  If Ret <> ERROR_SUCCESS Then Exit Do

  'リストに追加していく
  List1.AddItem Moji

  '初期化する
   Moji = String(250, Chr(0))
   Nagasa = Len(Moji)

  i = i + 1

 Loop

  'ハンドルを解放
  Call RegCloseKey(Hensu)

End Sub





API 技術関連のページへ戻る

ホーム PV ランキング