26.07.2017, 22:33
Hallo,
ich habe ein keines Tool geschrieben, mit dem ich rekursiv alle Einträge einer bestimmten Software aus der Registry auslesen kann. Wie kann ich es nun schaffen, wie es der Export aus der Registry es kann, die gefundenen Einträge mit allen Schlüsseln wie es die Registry auch tut, zu exportieren? Der Export soll mit allen gefundenen Einträgen in eine einzige .txt und .reg Datei geschrieben werden. Allerdings eben so wie es die Registry exportiert und nicht wie in meinem Beispielcode zu sehen ist.
Anbei mein Code. Es wäre klasse wenn mir weitergeholfen werden könnte.
Ferner möchte ich jetzt mal der erste sein, der hier eine Frage stellt . Die Forensoftware und das Erscheinungsbild dieses Forums finde ich klasse.
ich habe ein keines Tool geschrieben, mit dem ich rekursiv alle Einträge einer bestimmten Software aus der Registry auslesen kann. Wie kann ich es nun schaffen, wie es der Export aus der Registry es kann, die gefundenen Einträge mit allen Schlüsseln wie es die Registry auch tut, zu exportieren? Der Export soll mit allen gefundenen Einträgen in eine einzige .txt und .reg Datei geschrieben werden. Allerdings eben so wie es die Registry exportiert und nicht wie in meinem Beispielcode zu sehen ist.
Anbei mein Code. Es wäre klasse wenn mir weitergeholfen werden könnte.
Show ContentRegSearch:
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
#NoTrayIcon
#RequireAdmin
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <Misc.au3>
Opt('MustDeclareVars', 1) ; Variablen müssen deklariert werden.
Opt('GUIOnEventMode', 1) ; Eventmode aktivieren.
AutoItSetOption ("GUICloseOnESC", 1) ; Wenn ESC gedrückt wird, Gui beenden.
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
Global $sInput1, $sstart, $nMsg, $sString
Global $sTitle = 'RegSearch'
Global $sVersion = '1.0.0.0'
Global $sAuthor = 'Bazii'
Global $sDate = '26.07.2017'
Global $sFound = ''
Global $hDLL = DllOpen("user32.dll")
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
If _Singleton ($sTitle, 1) = 0 Then ; Wenn eine Instanz dieses Programms läuft, dann Meldung ausgeben ...
MsgBox(64, "Achtung", " -RegSearch- wurde bereits gestartet und kann nicht ein zweites Mal gestartet werden!", 10) ; Meldung ausgeben (Teil 1)
Exit ; Programm beenden
EndIf; Ende der If-Abfrage: Läuft bereits eine weitere Instanz?
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
GUICreate($sTitle & ' ' & $sVersion, 300, 90, -1, -1)
GUISetIcon("..\..\ICON\logo_FTP.ico", -1)
GUICtrlSetFont(-1, 9, 500, "Arial")
GUISetBkColor(0xD7E4F2)
GUISetOnEvent($GUI_EVENT_CLOSE, "__GUI_EVENT_CLOSE_")
$sInput1 = GUICtrlCreateInput("", 8, 8, 280, 21)
GUICtrlSendMsg(-1, 0x1501, 0, "HKLM Suchwort-Eingabe")
$sstart = GUICtrlCreateButton("Start!", 8, 56, 280, 25)
GUICtrlSetState($sstart, 768) ; Focus + Defbutton
GUICtrlSetOnEvent($sstart, _RegSearch_Start)
GUISetState(@SW_SHOW)
While Sleep(100)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _RegSearch_Start()
Local $sString = GUICtrlRead($sInput1)
Local $sfile = @ScriptDir & '\txt\' & $sString & '.txt'
Local $sfile2 = @ScriptDir & '\reg\' & $sString & '.reg'
If $sString = '' Then
MsgBox(16,"Fehler","Bitte Suchwort eingeben")
GUICtrlSetData($sString, "HKLM Suchwort-Eingabe")
Return 0
EndIf
ToolTip('bitte warten...', @DesktopWidth / 1.8, @DesktopHeight / 2, 'Suche nach ' & $sString & ' ...', 1, 5)
_RegSearch($sFound, 'HKEY_LOCAL_MACHINE', $sString)
If _IsPressed("1B", $hDLL) Then
MsgBox(64, "Achtung", "Abbruch durch Benutzer", 10)
DllClose($hDLL)
Exit
EndIf
FileOpen($sfile, 2)
FileWrite($sfile, $sFound)
FileClose ($sfile)
FileOpen($sfile2, 2)
FileWrite($sfile2, $sFound)
FileClose ($sfile2)
;~ MsgBox(64, 'Hinweis', 'Registry erfolgreich ausgelesen', 10, $sfile)
ShellExecute($sfile, @SW_MAXIMIZE)
Exit
EndFunc ;==>_RegSearch1
Func _RegSearch(ByRef $sFound, $sRegPath, $sSearch) ; Funktion von Oscar
Local $sKey, $sVal, $sVar, $i = 0, $j = 0
While True
$i += 1
$sKey = RegEnumKey($sRegPath, $i)
If @error Then ExitLoop
_RegSearch($sFound, $sRegPath & '\' & $sKey, $sSearch)
$j = 0
While True
$j += 1
$sVal = RegEnumVal($sRegPath & '\' & $sKey, $j)
If @error Then ExitLoop
$sVar = RegRead($sRegPath & '\' & $sKey, $sVal)
If StringInStr($sVar, $sSearch, 2) Then $sFound &= $sRegPath & '\' & $sKey & '\' & $sVal & @CRLF
WEnd
WEnd
Return
EndFunc ;==>_RegSearch
Func __GUI_EVENT_CLOSE_()
Exit
EndFunc ;==>__GUI_EVENT_CLOSE_
Ferner möchte ich jetzt mal der erste sein, der hier eine Frage stellt . Die Forensoftware und das Erscheinungsbild dieses Forums finde ich klasse.