are you tried debug your service? when i developed my services i do this:
#if !defined(_DEBUG)
SERVICE_TABLE_ENTRY servicetable[]=
{
{serviceName, ServiceMain},
{NULL,NULL}
};
StartServiceCtrlDispatcher(servicetable);
#else
ServiceMain(argc, argv);
#endif
This code runs your service like regular console app in debug, maybe you could catch the error running your service in debugger