¿Cómo detectar un proceso de inicio y finalización usando c # en Windows?

Tengo una buena experiencia de trabajo con c # pero ahora quiero desarrollar un software simple (puede ser una aplicación de consola) que solo detecte el nombre y la hora del proceso iniciado o terminado en mi computadora.

por ejemplo (supongo que mi pequeña aplicación ya se está ejecutando) si un usuario abre firefox entonces debería simplemente insertar firefox.exe en una base de datos con tiempo y si un usuario lo cierra, entonces también hará lo mismo.

y lo mismo que arriba si un usuario abre el bloc de notas, entonces debe insertar notepad.exe con el tiempo y así sucesivamente.

Sé cómo insertar valores en la base de datos, pero solo necesito su ayuda para identificar el inicio / finalización del proceso / progtwig en mi sistema.

Honestamente, dije que nunca desarrollé este tipo de aplicación antes, así que no tengo idea de que sea posible usar la aplicación de consola o necesito hacer una aplicación de servicio de Windows, etc.

así que por favor brinde su respuesta simplemente considerándome un principiante.

en la parte de c # puedo entenderlo, así que tengo que preocuparme por eso.

estoy usando Visual Studio 2010 con .net 4.0

-Gracias por adelantado

Para hacer esto sin votación, se requiere WMI. Esto está bien soportado en .net y puede usar la clase ManagementEventWatcher para suscribirse a las notificaciones de WMI.

Este artículo del Proyecto de Código ilustra cómo se hace. Aquí hay un extracto que muestra lo sencillo que es.

 notePad = new ProcessInfo("notepad.exe"); notePad.Started += new Win32Process.ProcessInfo.StartedEventHandler(this.NotepadStarted); notePad.Terminated += new Win32Process.ProcessInfo.TerminatedEventHandler(this.NotepadTerminated); 

Tenga en cuenta que ProcessInfo es una clase implementada en el código adjunto a ese artículo.