Registry in Allen unterschlüssen abfragen ...

  • Hey,

    habe einen frage möchte gerne in allen unterschlüsseln eine bestimmte zeichenfolge einen wert abfragen wie mache ich das?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (12. November 2009 um 12:49)

  • Sorry, wenn ich es direkt sage !!!
    Was möchtest Du, bitte?

    In allen Unterschlüsseln? Frage stellt sich mir: von welchem Hauptschlüssel?

    Eine bestimmte Zeichenfolge betrifft es? Stellt sich mir die Frage: welche Zeichenfolge?

    Einen bestimmten Wert? Stellt sich mir die Frage: welchen Wert möchtest Du abfragen?


    Wie Du das machst, das kann ich derzeitig nicht ohne Antwort auf o. g. Fragen beantworten ;)

    Regread Schlüssel Abfragen: klick hier. Aber das ist Dein eigenes Thema. Baut Deine Frage auf dieses Thema auf ???

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hey,

    ich will alles was unter hklm\software\log\
    einen bestimmte zeichen folge abfragen" zeichenfolgetest"
    und mir anzeigenlassen was nicht wert01 ist.

    hklm\software\log\test1\zeichenfolgetest = wert01
    hklm\software\log\test2\zeichenfolgetest = wert0111
    hklm\software\log\test3\zeichenfolgetest = wert01
    hklm\software\log\test4\zeichenfolgetest = wert04
    hklm\software\log\test5\zeichenfolgetest = wert01
    hklm\software\log\test6\zeichenfolgetest = wert01
    hklm\software\log\test7\zeichenfolgetest = wert01222
    hklm\software\log\test8\zeichenfolgetest = wert02
    hklm\software\log\test9\zeichenfolgetest = wert01
    hklm\software\log\test10\zeichenfolgetest = wert01
    hklm\software\log\test11\zeichenfolgetest = wert01


    Eine idee?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Naja von den Gedanken würde ich sagen so:

    Spoiler anzeigen
    [autoit]


    $var = RegRead("hklm\software\log", "test1\zeichenfolgetest")
    if $var <> "wert01" Then
    MsgBox(4096, "Ordner für Programme:", $var)

    [/autoit] [autoit][/autoit] [autoit]

    $var2 = RegRead("hklm\software\log", "test2\zeichenfolgetest")
    if $var2 <> "wert01" Then
    MsgBox(4096, "Ordner für Programme:", $var2)

    [/autoit]

    ,
    wobei ich meine das man noch irgendwie $var bzw. auch $var2 zuvor in Zahlenwert und Buchstabenwert aufteilen muss (splitten). Aber da fällt mir auf der Schnelle nichts ein. Habe auch gerade nur die eine Hand zum schreiben frei.

    Vielleicht ist Dir damit ansatzweise geholfen.

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Zitat

    Schau dir mal RegEnumKey an.

    in Verbindung mit RegEnumVal (Beispiel in der Hilfe) sollte das kein Problem sein...

  • habe mal eine frage.

    [autoit]

    For $i = 1 to 100
    $var = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\Autoit", $i)
    if @error <> 0 Then ExitLoop
    MsgBox(4096, "Wertname #" & $i & " unter dem AutoIt3 Schlüssel", $var)
    next

    [/autoit]

    Damit kriege ich alle zeichenfolge raus aber,
    wie kann man damit einen bestimmte zeichenfolge abfragen und den wert und alle unterschlüssel?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (11. November 2009 um 13:01)

  • Hey,
    was mache ich falsch?

    [autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    For $i= 1 to 10
    $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE", $i)
    If @error <> 0 then ExitLoop
    $var1 = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE" & $var, $i)
    MsgBox(4096, "" & $i & "", $var1)

    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    Kriege die MSG BOX
    Das system kann die angebene Datei nicht finden ???

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Zitat

    was mache ich falsch?

    nicht wenig :D

    also erstmal haste nen backslash vergessen (hinter SOFTWARE):

    [autoit]

    $var1 = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\" & $var, $i)

    [/autoit]


    2tens is der vorgang nicht logisch:

    mit deinem quellcode ausschnitt suchst du in Software die ersten 10 keys raus. dann suchst du im key nr.1 den schlüssel nr 1, dann in key 2 den schlüssel nr 2 dann in key 3 den schlüssel nr 3.

    siehste was falsch is?

    in software sind nochmal viele keys welche nochmal unterkeys haben und welche nochmal unterkeys haben...
    du suchst aber unter software\key1 -software\key10 nach schlüsseln.

    du müsstest erst so lange durchgehn bis kein unterkey mehr existiert, und dann in deiner schlüsselliste den wert auslesen. dann den nächsten schlüssel, dann den nächsten schlüssel, ... und wenn keiner mehr existiert in den nächsten unterkey und da alle schlüssel auslesen.

    das ganze kann ich mir vorstellen wird nicht spaßig :D

  • Hey,

    ich habe es auch mit dem '\' leider der geliche fehler??

    die zeichenfolge die ich abfragen will ist im root jeweil in dem schlüssel den ich abfragen will

    ich habe software als beispiel genommen.

    so in etwa sieht es aus:
    hklm\software\log\test1\zeichenfolgetest = wert01
    hklm\software\log\test2\zeichenfolgetest = wert0111
    hklm\software\log\test3\zeichenfolgetest = wert01
    hklm\software\log\test4\zeichenfolgetest = wert04
    hklm\software\log\test5\zeichenfolgetest = wert01
    hklm\software\log\test6\zeichenfolgetest = wert01
    hklm\software\log\test7\zeichenfolgetest = wert01222
    hklm\software\log\test8\zeichenfolgetest = wert02
    hklm\software\log\test9\zeichenfolgetest = wert01
    hklm\software\log\test10\zeichenfolgetest = wert01
    hklm\software\log\test11\zeichenfolgetest = wert01

    kann mir jemand noch einen tipp geben komme oirgendwie nicht weiter??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hi,

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Local $keys [1], $startkey = "HKEY_LOCAL_MACHINE\SOFTWARE\log", $string = "wert01", $gefunden [1]

    [/autoit][autoit][/autoit][autoit]

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error <> 0 then ExitLoop
    $keys [$i - 1] = $var
    ReDim $keys [$i + 1]
    Next

    [/autoit][autoit][/autoit][autoit]

    $count = 0
    For $i = 0 To UBound ($keys) - 1
    $regkey = RegRead ($startkey & "\" & $keys [$i], "zeichenfolgetest")
    If @error <> 0 then ExitLoop
    If $regkey <> $string Then
    $gefunden [$count] = $regkey
    $count += 1
    Redim $gefunden [$count + 1]
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    If $count > 0 Then _ArrayDisplay ($gefunden)

    [/autoit]

    ;-))
    Stefan

  • Hey,

    also gdamit klappt es super ;)

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Local $keys [1], $startkey = "HKEY_LOCAL_MACHINE\SOFTWARE\log", $string = "wert01", $gefunden [1]

    [/autoit][autoit][/autoit][autoit]

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error <> 0 then ExitLoop
    $keys [$i - 1] = $var
    ReDim $keys [$i + 1]
    Next

    [/autoit][autoit][/autoit][autoit]

    $count = 0
    For $i = 0 To UBound ($keys) - 1
    $regkey = RegRead ($startkey & "\" & $keys [$i], "zeichenfolgetest")
    If @error <> 0 then ExitLoop
    If $regkey <> $string Then
    $gefunden [$count] = $regkey
    $count += 1
    Redim $gefunden [$count + 1]
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    If $count > 0 Then _ArrayDisplay ($gefunden)

    [/autoit]

    Würde aber gerne den Schlüssel mit anzeigen lassen

    aber so geht es nicht

    [autoit]

    _ArrayDisplay ($keys & $gefunden)

    [/autoit]

    was muss ich jetzt dafür tuen damit es Klappt?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hi,

    so vielleicht:

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Local $keys [1] [2], $startkey = "HKEY_LOCAL_MACHINE\SOFTWARE\log", $string = "wert01"

    [/autoit][autoit][/autoit][autoit]

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error <> 0 then ExitLoop
    $keys [$i - 1] [0] = $var
    ReDim $keys [$i + 1] [2]
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound ($keys) - 1
    $regkey = RegRead ($startkey & "\" & $keys [$i] [0], "zeichenfolgetest")
    If @error <> 0 then ExitLoop
    If $regkey <> $string Then
    $keys [$i] [1] = $regkey
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay ($keys)

    [/autoit]

    ;-))
    Stefan

  • Super Funktioniert soweit

    jetzt zeigt er alle schlüssel an.
    Ich wollte alle die nicht ""wert01" sind inklusive schlüssel kannst du mir nochmal kurz helfen?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • bin zwar nich ganz im thema aber so könnts funktionieren:

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Local $keys [1] [2], $startkey = "HKEY_LOCAL_MACHINE\SOFTWARE\", $string = "wert01"

    [/autoit][autoit][/autoit][autoit]

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error <> 0 then ExitLoop
    $keys [$i - 1] [0] = $var
    ReDim $keys [$i + 1] [2]
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound ($keys) - 1
    $regkey = RegRead ($startkey & "\" & $keys [$i] [0], "zeichenfolgetest")
    If @error <> 0 then ExitLoop
    If $regkey <> $string Then
    $keys [$i] [1] = $regkey
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = ubound($keys) - 1 To 0 Step -1
    If $keys[$i][1] = 'wert01' Then _ArrayDelete($keys, $i)
    Next

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay ($keys)

    [/autoit]
  • Hi,

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Local $keys [1] [2], $startkey = "HKEY_LOCAL_MACHINE\SOFTWARE\", $string = "wert01"

    [/autoit][autoit][/autoit][autoit]

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error <> 0 then ExitLoop
    $keys [$i - 1] [0] = $var
    ReDim $keys [$i + 1] [2]
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound ($keys) - 1
    $regkey = RegRead ($startkey & "\" & $keys [$i] [0], "zeichenfolgetest")
    If @error <> 0 then ExitLoop
    If $regkey <> $string Then
    $keys [$i] [1] = $regkey
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    _cleararray ($keys)

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay ($keys)

    [/autoit][autoit][/autoit][autoit]

    Func _cleararray ($array)
    For $i = 0 To UBound ($array) -1
    If $array [$i] [1] = "" Then
    _ArrayDelete ($array, $i)
    ExitLoop
    EndIf
    Next
    _cleararray ($array)
    EndFunc

    [/autoit]

    ;-))
    Stefan

  • Hey,

    kriege die meldung:

    (31) : ==> Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.:
    ???

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • achso wenn du die leeren rauslöschen willst dann so:

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Local $keys [1] [2], $startkey = "HKEY_LOCAL_MACHINE\SOFTWARE\", $string = "wert01"

    [/autoit][autoit][/autoit][autoit]

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error <> 0 then ExitLoop
    $keys [$i - 1] [0] = $var
    ReDim $keys [$i + 1] [2]
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound ($keys) - 1
    $regkey = RegRead ($startkey & "\" & $keys [$i] [0], "zeichenfolgetest")
    If @error <> 0 then ExitLoop
    If $regkey <> $string Then
    $keys [$i] [1] = $regkey
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = ubound($keys) - 1 To 0 Step -1
    If StringStripCR($keys[$i][1]) = "" Then _ArrayDelete($keys, $i)
    Next

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay ($keys)

    [/autoit]
  • Hi,

    dann scheinst Du eine Menge von Keys zu haben. Andere Lösung:

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    Local $keys [1] [2], $startkey = "HKEY_LOCAL_MACHINE\SOFTWARE\", $string = "wert01"

    [/autoit][autoit][/autoit][autoit]

    For $i= 1 to 100
    $var = RegEnumKey($startkey, $i)
    If @error <> 0 then ExitLoop
    $keys [$i - 1] [0] = $var
    ReDim $keys [$i + 1] [2]
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound ($keys) - 1
    $regkey = RegRead ($startkey & "\" & $keys [$i] [0], "zeichenfolgetest")
    If @error <> 0 then ExitLoop
    If $regkey <> $string Then
    $keys [$i] [1] = $regkey
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    While 1
    $index = _ArraySearch ($keys, "", 0, 0, 0, 0, 0, 1)
    If @error Then ExitLoop
    _ArrayDelete ($keys, $index)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay ($keys)

    [/autoit]

    ;-))
    Stefan