tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルレジストリ
記事No12417
投稿日: 2008/06/03(Tue) 11:25
投稿者VB
レジストリでの質問です。
例)
subkey = "SYSTEM\CurrentControlSet\Control\Print\Printers"
↑Printers直下の全てのサブキー内にある
 (Printers直下のサブキーは、統一性はないです。)
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkey, 0, KEY_READ, hKeyResult)

Value = "test"
↑このtestファイルの中身をすべて取得したい。
 (testというファイル名は全て同じです。)
  (testファイルのデータは一纏めではなくそれぞれ別々に取得したいです。)
Size = Len(strAnswer)
ret = RegQueryValueEx(hKeyResult, Value, 0, REG_MULTI_SZ, ByVal strAnswer, Size)

text1.txt = strAnswer


○レジストリサブキーイメージ図
printers
 狼EST1
   test(REG_SZ)
 狼EST2
   test(REG_SZ)
 狼EST3
   test(REG_SZ)

何か良い案がありましたら、宜しくお願い致します。

自分的には
subkey = "SYSTEM\CurrentControlSet\Control\Print\Printers"
ここの宣言で
subkey = "SYSTEM\CurrentControlSet\Control\Print\Printers\\"
って書いたらPrintersのサブキーを勝手に認識して
全てのtestファイルを見に行ってくれたらなと思ったのですが
世の中そんなにあまくはないんですね・・・。f(^_^;

あと、もうひとつ質問です。
上の質問が無理なものなら。
サブキーの値を取得することは出来るでしょうか?
上のレジストリキーの図で言うと。
TEST1、TEST2、TEST3の名前を取得出来ないでしょうか?
どちらかが出来れば問題が解決なんですが・・・。
宜しくお願い致します。

[ツリー表示へ]
タイトルRe: レジストリ
記事No12418
投稿日: 2008/06/03(Tue) 12:54
投稿者魔界の仮面弁士
> Value = "test"
> ↑このtestファイルの中身をすべて取得したい。

『ファイル』というのは、何のことでしょうか?

文字通り、物理ファイルのパス名でしょうか。
それとも、レジストリキーの意味でしょうか。
あるいは、レジストリの値のことでしょうか。


とりあえずレジストリキーの事だと仮定すれば、こんな感じかな。



Option Explicit

Private Sub Command1_Click()
    Dim subKey As String
    subKey = "SYSTEM\CurrentControlSet\Control\Print\Printers"
    
    Dim keyName As String
    keyName = "Port"
    
    With GetObject("winmgmts:\root\default:StdRegProv")
        Const HKEY_LOCAL_MACHINE As Long = &H80000002
        Dim keyList() As Variant, varKey As Variant, varValue As Variant
        .EnumKey HKEY_LOCAL_MACHINE, subKey, keyList
        For Each varKey In keyList
            If .GetStringValue(HKEY_LOCAL_MACHINE, _
              subKey & "\" & varKey, keyName, varValue) = 0 Then
                Debug.Print "HKLM\" & subKey & "\" & varKey & "\" & keyName
                Debug.Print , varValue
            End If
        Next
    End With
End Sub

[ツリー表示へ]
タイトルRe^2: レジストリ
記事No12419
投稿日: 2008/06/03(Tue) 13:21
投稿者VB
> 文字通り、物理ファイルのパス名でしょうか。
> それとも、レジストリキーの意味でしょうか。
> あるいは、レジストリの値のことでしょうか。
後者のレジストリの値です。^^;
種類はREG_SZです。

> Option Explicit
>
> Private Sub Command1_Click()
>     Dim subKey As String
>     subKey = "SYSTEM\CurrentControlSet\Control\Print\Printers"
>    
>     Dim keyName As String
>     keyName = "Port"
>    
>     With GetObject("winmgmts:\root\default:StdRegProv")
>         Const HKEY_LOCAL_MACHINE As Long = &H80000002
>         Dim keyList() As Variant, varKey As Variant, varValue As Variant
>         .EnumKey HKEY_LOCAL_MACHINE, subKey, keyList
>         For Each varKey In keyList
>             If .GetStringValue(HKEY_LOCAL_MACHINE, _
>               subKey & "\" & varKey, keyName, varValue) = 0 Then
>                 Debug.Print "HKLM\" & subKey & "\" & varKey & "\" & keyName
>                 Debug.Print , varValue
>             End If
>         Next
>     End With
> End Sub
上記の解答、本当にありがとうございました。
完璧な解答です。。

[ツリー表示へ]