After the Install method of CAtlServiceModuleT is called, you could use OpenService to get a handle on the service and then ChangeServiceConfig to alter the service's start type to SERVICE_AUTO_START? Looking in the code, you could override RegisterAppId to do that, as RegisterAppId calls the Install method - you can't just override Install, because it's not virtual - RegisterAppId is the closest method called using a correctly typed object pointer (look for pT->RegisterAppId in AtlBase.h). Something like the code below should work? HRESULT RegisterAppId(bool bService = false) throw() { HRESULT hBaseRes = CAtlServiceModuleT< CbModule, IDS_SERVICENAME >::RegisterAppId(bService); if (SUCCEEDED(hBaseRes) && bService) { HRESULT hRes = E_FAIL; SC_HANDLE hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (hSCM != NULL) { SC_HANDLE hService = ::OpenService(hSCM, m_szServiceName, SERVICE_CHANGE_CONFIG); if (hService != NULL) { if (::ChangeServiceConfig(hService, SERVICE_NO_CHANGE, SERVICE_AUTO_START, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) { hRes = hBaseRes; } ::CloseServiceHandle(hService); } ::CloseServiceHandle(hSCM); } hBaseRes = hRes; } return hBaseRes; }