Registry: Vorher, Nachher Vergleich

  • Hallo. Ich möchte gerne ein Tool haben/selber bauen welches die Registry in zwei verschiedenen Zuständen vergleicht und mir Diferenzen auflistet. Ich erfasse z. B. vor der Installation eines Programmes den Zustand, also sämtliche Inhalte der Registry. Dann installiere ich mein gewünschtes. Danach möchte ich halt gerne sehen was sich in der Registry geändert hat.
    Kennt da jemand was? Ich weiss nicht ob das mit AutoIt realisierbar wäre. Theoretisch würde es ja gehen. Die Registry exportieren in eine Textdatei, jeweis vorher und nachher. Und dann einfach die einzelnen Zeilen miteinander vergleichen. Tja, theoretisch. Praktisch sind das aber 180MB an reinen Text, was nicht mal eben verarbeitet werden kann. Über eine Million an Zeilen.

  • Du kannst doch die Registry speichern.

    Schlagwort wäre: bevor & after

    Speichere erst die Registry unter "bevor", dann z. B. Programm installieren und dann die Registry speichern unter "after".
    Hast Du das gemacht, vergleiche beide Dateien und die Unterschiede läßt Du in eine Datei schreiben. Mit der richtigen Endlung kannst Du es sogar so machen, das die neuen Einträge, wenn Du sie z. B. manuell löscht, durch anklicken wieder in die Registry einspielst.
    Aber sei vorsichtig, denn die Registry ist das Herzstück jedes Windowscomputers.

    Wie das geht mit in Datei speichern und vergleichen, findest Du alles bereits im Forum und ind er Hilfe.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Such mal bei Google nach "RegDiff".

  • Falls du das Skript dann fertig hast, wäre ich dann froh, wenn du die Lösung posten könntest...ich arbeite gerade an einem grösseren Projekt und bräuchte dafür genau so einen vorher/nacher-Vergleich von HKLM und HKU und wäre froh, wenn ich den nicht selbst schreiben müsste ;)

    Bild1: Ich beim debuggen

  • Du kannst doch die Registry speichern.

    Schlagwort wäre: bevor & after

    Speichere erst die Registry unter "bevor", dann z. B. Programm installieren und dann die Registry speichern unter "after".
    Hast Du das gemacht, vergleiche beide Dateien und die Unterschiede läßt Du in eine Datei schreiben. Mit der richtigen Endlung kannst Du es sogar so machen, das die neuen Einträge, wenn Du sie z. B. manuell löscht, durch anklicken wieder in die Registry einspielst.
    Aber sei vorsichtig, denn die Registry ist das Herzstück jedes Windowscomputers.

    Wie das geht mit in Datei speichern und vergleichen, findest Du alles bereits im Forum und ind er Hilfe.

    Ja, das ist ja auch mein Plan. Aber ich bekomme ja nichtmal die komplette Datei in ein Array für die Bearbeitung, da bei Arrays bei 65.530 Einträgen Schluss ist. Es scheitert also schon am Anfang. 2.961.601 Einträge sollte es eigentlich haben :-O

    Einmal editiert, zuletzt von Scritch (14. August 2012 um 12:21)

  • Aber ich bekomme ja nichtmal die komplette Datei in ein Array für die Bearbeitung, da bei Arrays bei 65.530 Einträgen Schluss ist.


    Stimmt nicht. Das Limit liegt wenn ich das recht in Erinnerung habe irgendwo bei 16 Mio. pro Dimension und maximal 64 Dimensionen sind erlaubt. Man kann also theoretisch über 1 Milliarde Einträge in einem Array haben.

    [autoit]


    dim $aTest[10000000]

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

    $aTest[9999999]="test"
    MsgBox(0,"",$aTest[9999999])

    [/autoit]
  • Naja, vll. hat _ArrayDisplay auch eine Begrenzung?

    [autoit]

    #include <array.au3>
    dim $aTest[1000000]
    _arraydisplay($atest)

    [/autoit]


    Da zeigt er mir nur 65.530 Datenfelder an, in der ersten Dimension.

  • Kann durchaus sein. Allerdings gilt das Limit scheinbar nicht pro Dimension, sondern pro Array. Mehr als 16.777.216 Felder gesamt sind nicht erlaubt.

    EDIT:

    Arraydisplay kann auch mehr als 65k Zeilen anzeigen:

    [autoit]


    #include <array.au3>

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

    dim $aTest[80000][3]
    $aTest[79999][0]="test"

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

    _ArrayDisplay($aTest)

    [/autoit]

    Einmal editiert, zuletzt von misterspeed (14. August 2012 um 12:43)

  • Scritch Das Problem bei _ArrayDisplay ist nicht das Array-Limit, sondern die Tatsache, dass man nur maximal 65532 Controls in einem GUI (oder vielleicht auch in allen zusammen) haben kann.

    MfG, James

    Edit: misterspeed Kann man? Sollte aber laut "AutoIt Help" > "Appendix" > "AutoIt3 Limits/defaults" nicht möglich sein. :D

  • Klar kann man. Das Limit bezieht sich auf Controls, ein Listview ist genau 1 Control. Aber beim testen eben ist mir aufgefallen, dass große Arrays extrem viel Arbeitsspeicher bei der Listviewerstellung fressen. Das kann dann ggf. auch mit dem maximal addressierbaren Arbeitsspeichers von 32bit Anwendungen kollidieren.

  • Klar kann man. Das Limit bezieht sich auf Controls, ein Listview ist genau 1 Control. Aber beim testen eben ist mir aufgefallen, dass große Arrays extrem viel Arbeitsspeicher bei der Listviewerstellung fressen. Das kann dann ggf. auch mit dem maximal addressierbaren Arbeitsspeichers von 32bit Anwendungen kollidieren.

    Ok, dann kollidierts mit meinem 32 Bit OS :)

  • Benutze doch einfach schon vorhandene Software, z.B. ERUNT oder Regshot.
    Sollte ziemlich gut damit (erst recht mit letzterem) funktionieren. ;)

    Prinzipiell kein Problem, mit zusätzlicher Software. Ist aber immer nicht so gern gesehen bei uns im unternehmen für jede Kleinigkeit weiter Software zu benutzen. AutoIt benutzen wir schon in vielen Fällen und es wäre toll, wenn man dabei bleiben könnte :) Ich werde mir das dennoch mal anschauen, danke dir :)

  • Ehem...also ich spreche mal für mich: das Problem ist, dass ich das ganze im Programm verwenden können muss, also das ich quasi danach eine Datei (oder ein Array) habe, in welcher die Änderungen stehen (dadurch, dass mein Programm auch von potenziellen DAUs verwendet werden können muss, will ich dafür keine eigene Oberfläche).

    Bild1: Ich beim debuggen

  • Das ist so von mir gedacht, dass das ganze dann in einem Array stehen wird, welches dann nur in eine Datei geschrieben wird. Ich brauche das ganze eigentlich auch nur um ein schon vorhandenes Skript zu erweitern.