I think that this is incorrect. If you let StartServiceCtrlDispatcher to continue with no error, you make calling program think that it is running under control of service control manager. When service program handles somehow any kind of its launching, the behaviour may be quite different. Also, under windows StartServiceControlDispatcher always fails if service program is started not with StartService (maybe we should add 15 seconds delay to exactly emulate versions earlier than XP? ;-))).
Alexander