Laden...

Registry auf Änderungen prüfen

Erstellt von michael.schoeppe vor 18 Jahren Letzter Beitrag vor 18 Jahren 3.456 Views
M
michael.schoeppe Themenstarter:in
17 Beiträge seit 2005
vor 18 Jahren
Registry auf Änderungen prüfen

Hallo,

Ich möchte gerne eine Funktion in einem Programm das ich gerade schreibe, implementieren, welche die Registry permanent auf Änderungen (neue Einträge kommen hinzu, Einträge verändern sich, Einträge werden gelöscht usw.) überprüft und diese meldet. Klar könnte ich die gesamte Registry in einer Schleife auslesen lassen (simpler Gedanke), aber das wär wohl sehr Leistungsraubend denk ich. Gibt es da nicht eine besser Möglichkeit? Irgendetwas, was ich z.B. in der Sprachreferenz übersehen habe?

bin für jede Hilfe dankbar

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo michael.schoeppe,

wenn du ein fertiges Programm haben willst, dass das tut: RegMon von http://www.sysinternals.com/Utilities/Regmon.html .

Aber wie haben die das programmiert? Hooks?

herbivore

M
michael.schoeppe Themenstarter:in
17 Beiträge seit 2005
vor 18 Jahren

Du hast Recht,
so ein Programm soll es werden. Es soll allerdings später einmal auch Bestandteil eines Programms sein welches alle Aktionen erfasst wenn sich ein anderes Programm installiert und dieses dann ohne Restmüll wieder entfernen können.

Na ja! Es gibt da glaube ich noch ne andere Möglichkeit die mir da so vorschwebt:
Die Registry ist doch letztendlich auch nix anderes als eine Ansammlung von Dateien. Wenn man eben nur diese Dateien auf Änderungen überprüft (Das geht soweit ich weiß), dann weiß man zumindest das es in der Registry irgendeine Änderung gegeben hat. Welche, das kann man dann ja im Nachhinein überprüfen, sofern man natürlich vorher ein Abbild dieser Registrydateien sowie der Registry ansich zum Vergleich angelegt hat.

Mit anderen Worten: Das Programm erstellt beim Erststart Backups der Dateien und liest aus der Registry alles aus und speichert das. Alles zum Vergleich. Dann läuft das Programm im Hintergrund (als Dienst vielleicht) und überprüft die Registrydateien permanent ob sich was ändert. Wenn sich was ändert wird die Registry durchlaufen und mit den zuvor gespeicherten Registrydaten verglichen. Auf die Art findet dann das Programm die tatsächliche Änderung und meldet dieses. Wieder werden Backups gemacht um neue Vergleichswerte für mögliche spätere Änderungen zu haben.

Aber ganz ehrlich: Ich bin mit diesem Gedanken nicht unbedigt zufrieden. Ich hatte mir erhofft das es was simpleres gibt, wie ein bereits existierendes Event das in der Registry horcht z.B.
Denn am liebsten arbeite ich mit Bordmitteln. Man muß ja nicht mehr als nötig programmieren, gelle?
Aber nun gut! Ich werde auf jeden Fall auch meine Methode ausprobieren.
Aus welchen Dateien die Registry besteht weiß ich ja.
Hoffe trotzdem das vielleicht hier noch jemanden was einfällt.
Auf jeden Fall Danke schonmal

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo michael.schoeppe,

Wenn man eben nur diese Dateien auf Änderungen überprüft ..

das kannst du wohl vegessen. Die Registry ändert sich dauernd und ein Vergleich von zwei Registry-Ständen dauert ewig.

Denn am liebsten arbeite ich mit Bordmitteln.

Die gibt es auch für deinen Zweck. Nur habe ich sie leider nicht parat.

herbivore

H
704 Beiträge seit 2003
vor 18 Jahren

Für Windows NT und aufwärts kann man da System-call Hooking verwenden.
Im Dr. Dobbs Journal gibts da einen Artikel: http://www.ddj.com/documents/s=945/ddj9701e/

Für Windows 95 und aufwärts kannst du das nicht verwenden, da musst du virtuelle Devicetreiber verwenden. kA wie das geht ^^

Und unter Windows 2003 kannst du Registry Callbacks verwenden.

Ist alles ziemlich nahe am System, deswegen solltest du schon ein wenig mit Windows Kernelprogrammierung vertraut sein.

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
1.457 Beiträge seit 2004
vor 18 Jahren

Unter CodeProject hatte ich etwas von eine Registry Monitor gelesen gehabt. Kannst ja mal danach suchen.

M
michael.schoeppe Themenstarter:in
17 Beiträge seit 2005
vor 18 Jahren

Also wie Du schon richtig sagst, herbivore, würde der Vergleich sicherlich ziemlich lange dauern. Mein Gedanke war das ja jede Datei einem bestimmten Ast der Registry entspricht. Mit dem Wissen bräuchte man dann nicht mehr die Gesamte Registry vergleichen, sondern nur noch den entsprechenden Ast (natürlich vom 'Root' abwärts). Aber wahrscheinlich würde das auch zu lange dauern. Vielleicht lasse ich es trotzdem mal auf einen Versuch ankommen.

Leider, Hauptmann, bin ich zu meiner Schande überhaupt nicht mit Kernelprogrammierung vertraut. Ich weiß zwar was der Kernel ist und wie er ungefähr arbeitet, das wars dann aber auch schon. Mal schauen: Vielleicht befasse ich mich in Zukunt auch mal mehr damit.

Trotzdem soweit Danke an alle