Logo Eng2ita
ENG2ITA Community Versione lo-fi
16/10/2018, 22:46 *
Benvenuto, Visitatore. Per favore, effettua il login o registrati.
Hai perso la tua email di attivazione?

Login con username, password e lunghezza della sessione
E' stata disabilitata la ricerca ai visitatori! 
   Home   Sitemap Regolamento del forum Login Registrati  
Pagine: 1 
  Stampa  
Questo topic non e' stato ancora votato!
Non hai ancora votato questo topic. Seleziona una valutazione:
Autore Topic: _RegEnumKeyEx (Lists all subkeys in a specified registry key)  (Letto 1551 volte)
0 Utenti e 1 Visitatore stanno guardando questo topic.
OnePiece
Hero Member
*****

Karma: -3277
Offline Offline

Post: 5219



« il: 16/09/2012, 19:03 »

Ragazzi cercando in Autoit forum per un codice da leggere il registro, e non trovando niente, ecco o fato questo codice che sembra davvero OKKK, per chi usa AutoIt la troverà davvero tanto tanto utile

Codice:
#RequireAdmin
#include <Array.au3>

$KeyName = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft"
;$KeyName = "HKEY_CLASSES_ROOT"    ;104718
;$KeyName = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes"

Global $a1, $b1
$a1 = TimerInit()
$b1 = _RegEnumKeyEx($KeyName, 0,  "Opti*Components")    ; to find HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\OptionalComponents
$a1 = TimerDiff($a1)
_ArrayDisplay($b1, $a1)


; #FUNCTION# ========================================================================================================================
; Name...........: _RegEnumKeyEx
; Description ...: Lists all subkeys in a specified registry key
; Syntax.........: _RegEnumKeyEx($KeyName[, $iFlag = 0[, $sFilter = "*"]])
; Parameters ....: $KeyName - The registry key to read.
;                 $iFlag   - Optional specifies Recursion
;                 |$iFlag = 0 (Default) All Key-SubKeys Recursive Mod
;                 |$iFlag = 1 All SubKeys Not Recursive Mod
;                 $sFilter - Optional the filter to use, default is *. (Multiple filter groups such as "All "*.XXx|*.YYY|*.ZZZ")
;                  Search the Autoit3 helpfile for the word "WildCards" For details.
; Return values .: Success  - Return Array List (See Remarks)
;                 Failure - @Error
;                 |1 = Invalid $sFilter
;                 |2 = No Key-SubKey(s) Found
; Author ........: DXRW4E
; Modified.......:
; Remarks .......: The array returned is one-dimensional and is made up as follows:
;                               $array[0] = Number of Key-SubKeys returned
;                               $array[1] = 1st Key\SubKeys
;                               $array[2] = 2nd Key\SubKeys
;                               $array[3] = 3rd Key\SubKeys
;                               $array[n] = nth Key\SubKeys
; Related .......:
; Link ..........:
; Example .......: _RegEnumKeyEx("HKEY_CURRENT_USER\Software\AutoIt v3")
; Note ..........:
; ===================================================================================================================================
Func _RegEnumKeyEx($KeyName, $iFlag = 0, $sFilter = "*")
    If StringRegExp($sFilter, "[\\/:><]|(?s)\A\s*\z") Then Return SetError(1, 0, "")
    Local $DX_REKI[101] = [100], $DX_REKISN, $BS = "\", $DX_REKNL, $I = 1, $DX_Filter = StringRegExpReplace($sFilter, "[\*\s]+", ""), $DX_REKFilter = "(?i)(" & StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace("|" & $sFilter & "|", '\|\h*\|[\|\h]*', "\|"), '[\^\$\(\)\+\[\]\{\}\,\.\]', "\\$0"), "\|([^\*])", "\|^$1"), "([^\*])\|", "$1\$\|"), '\*', ".*"), '^\||\|$', "") & ")"
    While $I
        $DX_REKI[$I] += 1
        $DX_REKISN = RegEnumKey($KeyName, $DX_REKI[$I])
        If @error Then
            $DX_REKI[$I] = 0
            $I -= 1
            $KeyName = StringLeft($KeyName, StringInStr($KeyName, "\", 1, -1) - 1)
            ContinueLoop
        EndIf
        If $DX_Filter Then
            If StringRegExp($DX_REKISN, $DX_REKFilter) Then $DX_REKNL &= @LF & $KeyName & $BS & $DX_REKISN
        Else
            $DX_REKNL &= @LF & $KeyName & $BS & $DX_REKISN
        EndIf
        If $iFlag Then ContinueLoop
        $I += 1
        If $I > $DX_REKI[0] Then
            $DX_REKI[0] += 100
            ReDim $DX_REKI[$DX_REKI[0] + 1]
        EndIf
        $KeyName &= $BS & $DX_REKISN
    WEnd
    If Not $DX_REKNL Then Return SetError(2, 0, "")
    Return StringSplit(StringTrimLeft($DX_REKNL, 1), @LF)
EndFunc

Ciao a tutti.
« Ultima modifica: 16/09/2012, 19:09 da OnePiece » Loggato

   
ENG2ITA Community
« il: 16/09/2012, 19:03 »

 Loggato
Pagine: 1 
  Stampa  
 
Salta a:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | Sitemap XHTML 1.0 Valido! CSS Valido!

Eng2ita.net - Tutti i diritti riservati ©2006-2015   |   Privacy policy |   Licenza Creative Commons