Hi Leute,
gleich zum Anfang, ich bin neu hier, also ned böse sein falls ich im falschen Bereich poste.
Also zu meinem Problem,
Ich würde gerne ein Programm programmieren, dass aufzeichnet, wann irgendein Programm gestartet wird und für wie lange es geöffnet ist (ähnlich TaskManager).
Leider habe ich keine Ahnung wie ich eine Reaktion bekomme wenn ein anderes Programm gestartet wird...
falls das zu unverständlich war, es sollte ungefähr so aussehen:
if ( User.Opens.AnyProgramm )
{
...
}
gibts dafür einen eigenen Befehl für "User.Opens.AnyProgramm" oder ist das etwas komplizierter?
MfG Narrow
Das kann Windows auch mit Bordmitteln.
Zuerst musst du in "Lokale Sicherheitsrichtlinie\Sicherheitseinstellungen\Lokale Richtlinien\Überwachungsrichtlinie" die Überwachung "Prozessverfolgung überwachen" für "Erfolgreich" aktivieren.
Dadurch wird im Sicherheitslog ein Ereignis mit der Kennung 592 erzeugt, wenn ein neuer Prozess gestartet wurde, nach dem Beenden mit der Kennung 593.
Alles, was dein Programm dann noch tun muss, ist das Sicherheitslog zu überwachen.
Danke erstmal für die schnelle antwort,
ich kann mir jetzt ja die Ereignisse in der Ereignisanzeige ansehen, aber wie kann ich die jetzt in mein Programm einbinden bzw. wo werden die log-dateien gespeichert?
Also wenn ich mich recht erinner müsste man da mit WMI 'dran kommen.
Ist lange her, daher kann ich dir nur son Schlagwort geben.
Aber vielleicht hilfts ja 😉
Mittels System.Diagnostics.EventLog.
EventLog myLog = new EventLog( "Security" );
myLog.EntryWritten += new EntryWrittenEventHandler( myLogWatcher );
myLog.EnableRaisingEvents = true;
// ...
public void myLogWatcher( object sender, EntryWrittenEventArgs e )
{
// alles über das Event steckt in e.Entry (soll heißen: Breakpoint und einfach mal schauen...
switch( e.Entry.InstanceID )
{
case 592: // Prozess gestartet
// was auch immer
break;
case 593: // Prozess beendet
// was auch immer
break;
default:
return;
}
}
EDIT: Achtung, zum Auslesen des Sicherheitslog braucht man Admin- oder System-Rechte. Am besten ist es also, das ganze in einen Service auszulagern.