Your main problem is that you start another process Cobian.exe. It makes no sense — nothing prevents OS to kill this process. The call to
WaitForExit
using integer parameters also makes no sense, especially using this
immediate constant. You simply create a timeout for the wait; in other words, if the process is not yet terminated you might stop waiting. Also,
there is no situations when a hard-coded file path name can be useful. You could find out the right path parameters using some configuration file.
Maybe the shutdown of the computer is not a good time to perform the backup. Some people never shutdown for many days, or use stand-by or hibernate. Shutdown of a computer is not a special moment where the backup is more valuable anyway: a trouble can happen anytime, at the moment of time not related to shutdown or start up.
Usually, backup is done according to some schedule.
And you don't need to write your own Windows Service. The Service you need already exists, called
Windows Task Scheduler, see:
http://en.wikipedia.org/wiki/Task_Scheduler[
^],
http://msdn.microsoft.com/en-us/library/aa383614.aspx[
^],
http://msdn.microsoft.com/en-us/library/aa384006%28v=VS.85%29.aspx[
^].
See the last link above for use of the Windows Task Scheduler. You can use its API in your program using
Task Scheduler Managed Wrapper, see
http://taskscheduler.codeplex.com/[
^].
But if can be even simpler. You can use Windows Task Scheduler using Windows utilities AT.EXE or SchTasks.EXE, see:
http://en.wikipedia.org/wiki/At_(Windows)[
^],
http://technet.microsoft.com/en-us/library/bb490866.aspx[
^],
http://en.wikipedia.org/wiki/Schtasks[
^],
http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357%28v=vs.85%29.aspx[
^].
—SA