June 5th, 2017

How can I register a program to auto-relaunch if it crashes or is terminated?

A customer wanted a program that auto-relaunched itself if it crashes, or even is explicitly terminated by the user. They were wondering if there was a way to register such a program with the system. Right now, they have a second program that monitors the first, and if the first program crashes, then the second program relaunches it.

Well, if the program is a Windows service, then they can configure the recovery policy, either programmatically or via the user interface (on the Recovery tab).

But for regular interactive applications (which is what this program was), there is no such automatic functionality. And since they wanted to make the program auto-restart even if the user explicitly terminates it, I suspect the purpose of the program is not so much to assist their users but to monitor (and possibly harrass) them.

At the end of the day, all you can do is build taller and taller walls, and the hostile users will buy taller and taller ladders. In this case, the user could terminate the second program, thereby taking out the monitor, and thus allowing them to terminate the main program with impunity. Or they could suspend the main program, so that it doesn’t terminate but doesn’t do anything useful either. If you add a heartbeat function, the users could attach a debugger to the program and patch out the code that implements the undesirable behavior and leaves just the heartbeat.

At this point, it’s a matter of how hostile a user you want to defend yourself against.

Topics
Code

Author

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

0 comments

Discussion are closed.