There is a number of way.
One way is the simplest and perhaps the weakest: add a LNK file in the Start menu under "Startup". It can be per user or for all users and start up your application right after the user logs in.
Another, most powerful option is creation of a Windows Service. If you install or configure it as "automatic" it will be run under Service Manager on system start-up and will keep running when the users log in and out. You can capture different system events and act properly. This approach is the most difficult and will take logging and extra skills in debugging.
All other ways are related to programmatic adding nodes to the system registry. I have one "secret weapon" which helps me to learn where you can hook up different phases of start up. This is
Sysinternals AutoRuns utility. Go to Sysinternals Web site and download
Sysinternals Suite:
http://technet.microsoft.com/en-us/sysinternals/bb842062[
^]. You can download separate utilities (see
http://technet.microsoft.com/en-us/sysinternals/bb545027[
^]) but the whole Suite is must-have for a developer.
Unpack and run AutoRuns, traverse all the sections, read help. It will show you all the places where you can trigger start up of your application. All the nodes has "jump to" feature which will jump to a registry node using Regedit. This utility can be uses as the ultimate source of knowledge on the topic.
—SA