2009-08-15 7 views
2

Gibt es eine Möglichkeit, benachrichtigt zu werden, wenn ein Programm von einem Benutzer in C# ausgeführt oder beendet wird? Ich spreche über alle Programme, die ein Benutzer ausführen kann, nicht nur ein bestimmtes Programm. Ich möchte benachrichtigt werden, wenn ein Benutzer .exe-Dateien ausführt.Wie wird eine Programmausführung und Beendigung in C# gemeldet?

Ich kann nicht einmal an ein Stichwort zu Google denken.

irgendwelche Vorschläge würden geschätzt!

Antwort

3

Das nächste, was ich kenne, wäre die Verwendung von Hooks.

Sie können WH_SHELL Hooks verwenden, um Benachrichtigungen zu erhalten, wenn ein neues, nicht besessenes Fenster auf oberster Ebene vom System erstellt oder zerstört wird. Dies ist nicht dasselbe wie ein Prozess, aber es ist in vielen Fällen ziemlich nah und möglicherweise in anderen nützlicher (da es ein neues Word-Dokumentfenster öffnen würde, nachdem eines bereits geöffnet wurde, obwohl sie ein Shared verwenden verarbeiten).

Sie können dies möglicherweise mit EnumProcess kombinieren, um zu prüfen, ob sich die Prozessliste geändert hat. Dies würde für das Verfolgen von Windows-Anwendungen funktionieren (aber nicht für Dienste oder konsolenbasierte Anwendungen, die in einer vorhandenen Konsole ausgeführt werden).

+0

eigentlich, das ist genau das, was ich gesucht habe. Vielen Dank! – Moon

2

In Microsoft .NET Framework 3.5 können Sie eine Liste von Process es erhalten und für das Ereignis Process.Exited registrieren. Ich nehme an, jemand könnte ein Abfragesystem implementieren, in dem sie ständig nach neuen Prozessen suchen, aber das benachrichtigt Sie nicht wirklich, wenn etwas gestartet wird.

- EDIT -

Sie nützliche this article finden könnte. Wenn Sie einen Kernel-Modus-Treiber schreiben möchten, können Sie jeden Prozessstart und -ende steuern.

Jetzt, wenn Sie wirklich wollen wild werden, können Sie in Microsoft Detours einhaken. Hier ist ein interesting article darüber.

+0

-1: Das hilft nicht viel, wenn ein Prozess ausgeführt wird. –

+0

Ich hoffe, die Bearbeitung beleidigt dich nicht so sehr. :) –

+0

@Paul Williams: Danke für zusätzliche Links und Infos! – Moon