Most fundamental option is writing a Windows Service is a serious option. It gives important benefits over regular applications, but also more difficult to develop and debug. The service keeps running when users log out and log in.
For all other ways, I have a more comprehensive method which I find very robust. You can find all different ways to register application for loading once or on regular basis following SysInternals application called
1) Go to SysInternals site: http://technet.microsoft.com/en-us/sysinternals
2) Download SysInternals Suit: http://download.sysinternals.com/Files/SysinternalsSuite.zip
]; you can also download separate applications, but there are more useful things, read utilities Index: http://technet.microsoft.com/en-us/sysinternals/bb545027
3) Unpack and run
, read it help and look at the top-level items of the tree: they show when you can install your applications.
4) Activate context menu and select "Jump To"; it will open
on a selected item.
5) Write installation application which writes the path to your application and parameters in a right place in the Registry.