Quizás
KuBox conozca alguna otra metodología más apropiada, ya que lo mio no es el diseño de virus/troyanos, pero te lo comento igual...
Una manera de hacerlo sería desarrollando un servicio de
Windows, instalarlo y mantener el servicio escuchando la actividad del proceso (ya sea mediante técnicas
IPC cómo sockets o un mapeo de memoria compartida, o simplemente realizando una consulta a la lista de procesos actual
Process.GetPRocesses() ), si se detecta inactividad (es decir, si no se encuentra el proceso en ejecución) iniciarlo de nuevo.
Esto sería practicamente lo mismo que mantener 2 procesos en ejecución cómo sugeriste, pero con sus ventajas (y su elegancia xD).
➢
Creating a Windows Service Application - MSDN➢
A basic Windows service in C# - MSDN Code+
➢
Interprocess Communications (IPC) - MSDNSaludos!