Guys, I found a windows service wrapper:
http://kenai.com/projects/winsw/pages/Home
It's better than instsrv/srvany because you can use recovery options for crash protection, and although it isn't as good as the firedaemon suite, it's free.
winsw executable should be renamed for each instance, i.e. arma2cus.exe
Here is my sample xml config (arma2cus.xml):
<service>
<id>arma2cus</id>
<name>ArmA2 Custom</name>
<description>CAA1 Loaded</description>
<executable>C:\arma2cus\ArmA2Server.exe</executable>
<logpath>C:\arma2cus\logs</logpath>
<logmode>roll</logmode>
<startargument>-port=2312 -name=default -config=default\server.cfg -cfg=default\arma2.cfg -profiles=default -mod=x\caa1;x\oac\oac_core;@CBA;@OPX;@DCM</startargument>
<interactive />
</service>
Go to services.msc
Use the Recovery tab to set all three failures to Restart the Service.
PS: I don't think <interactive /> does anything or you need to be in the user account the service is running as which I guess you can change in that third services tab.