title: C++ Service Error While Starting : Could not Start the Service on Local Computer
body: <p>I have created a Win32 Service using C++ and installed to the Services Successfully.</p>
  
  <p>Now While I try Starting the service from Services.msc , I am getting the Error:
  Could not start the Service on Local Computer . Error 2: The system can not find the File specified.</p>
  
  <p>Here is the code snippet I am defining in the Service Entry Point:</p>
  
  <pre><code>#include "stdafx.h"
  #include "iostream"
  #include "Windows.h"
  #include "Winsvc.h"
  #include "time.h"
  
  
  SERVICE_STATUS m_ServiceStatus;
  SERVICE_STATUS_HANDLE m_ServiceStatusHandle;
  BOOL bRunning=true;
  void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
  void WINAPI ServiceCtrlHandler(DWORD Opcode);
  BOOL InstallService();
  BOOL DeleteService();
  void main(int argc, char* argv[])
  {
  
    if(argc&gt;1)
    {
      if(strcmp(argv[1],"-i")==0)
      {
        if(InstallService())
          printf("\n\nService Installed Sucessfully\n");
        else
          printf("\n\nError Installing Service\n");
      }
      else if(strcmp(argv[1],"-u")==0)
      {
        if(DeleteService())
          printf("\n\nService UnInstalled Sucessfully\n");
        else
          printf("\n\nError UnInstalling Service\n");
      }
      else
      {
        printf("\n\nUnknown Switch Usage\n\nFor Install use WindowService -i\n\nFor UnInstall use WindowService -u\n");
      }
    }
    else
    {
      SERVICE_TABLE_ENTRY DispatchTable[]=
                  {{"myService",ServiceMain},{NULL,NULL}};
      StartServiceCtrlDispatcher(DispatchTable);
    }
   // DeleteService();
    //return 0;
  }
  
  void WINAPI ServiceMain(DWORD argc, LPTSTR *argv)
  {
    DWORD status;
    DWORD specificError;
    m_ServiceStatus.dwServiceType = SERVICE_WIN32;
    m_ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
    m_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
    m_ServiceStatus.dwWin32ExitCode = 0;
    m_ServiceStatus.dwServiceSpecificExitCode = 0;
    m_ServiceStatus.dwCheckPoint = 0;
    m_ServiceStatus.dwWaitHint = 0;
  
    m_ServiceStatusHandle = RegisterServiceCtrlHandler("myService", 
                                              ServiceCtrlHandler); 
    if (m_ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0)
    {
      return;
    }
    m_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
    m_ServiceStatus.dwCheckPoint = 0;
    m_ServiceStatus.dwWaitHint = 0;
    if (!SetServiceStatus (m_ServiceStatusHandle, &amp;m_ServiceStatus))
    {
    }
  system("start c:\\progra~1\\intern~1\\iexplore.exe http://www.google.com");
    //strcat("Win1", "1.exe");
    /*bRunning=true;
    while(bRunning)
    {
      //Sleep(3000);
      //Place Your Code for processing here....
         //printf("\nThe Service is Running Now...\n");
  
  
    }*/
    return;
  }
  
  void WINAPI ServiceCtrlHandler(DWORD Opcode)
  {
    switch(Opcode)
    {
      case SERVICE_CONTROL_PAUSE: 
        m_ServiceStatus.dwCurrentState = SERVICE_PAUSED;
        break;
      case SERVICE_CONTROL_CONTINUE:
        m_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
        break;
      case SERVICE_CONTROL_STOP:
        m_ServiceStatus.dwWin32ExitCode = 0;
        m_ServiceStatus.dwCurrentState = SERVICE_STOPPED;
        m_ServiceStatus.dwCheckPoint = 0;
        m_ServiceStatus.dwWaitHint = 0;
  
        SetServiceStatus (m_ServiceStatusHandle,&amp;m_ServiceStatus);
        bRunning=false;
        break;
      case SERVICE_CONTROL_INTERROGATE:
        break; 
    }
    return;
  }
  
  BOOL InstallService()
  {
    char strDir[1024];
    HANDLE schSCManager,schService;
    GetCurrentDirectory(1024,strDir);
    strcat(strDir,"\\Debug\\WindowService.exe"); 
    schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
  
    if (schSCManager == NULL) 
      return false;
    LPCTSTR lpszBinaryPathName=strDir;
  
    schService = CreateService(schSCManager,"myService", 
          "my_Service", // service name to display
  
       SERVICE_ALL_ACCESS, // desired access 
  
       SERVICE_WIN32_OWN_PROCESS, // service type 
  
       SERVICE_DEMAND_START, // start type 
  
       SERVICE_ERROR_NORMAL, // error control type 
  
       lpszBinaryPathName, // service's binary 
  
       NULL, // no load ordering group 
  
       NULL, // no tag identifier 
  
       NULL, // no dependencies
  
       NULL, // LocalSystem account
  
       NULL); // no password
  
  
    if (schService == NULL)
      return false; 
  
    CloseServiceHandle(schService);
    return true;
  }
  
  BOOL DeleteService()
  {
    HANDLE schSCManager;
    SC_HANDLE hService;
    schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
  
    if (schSCManager == NULL)
      return false;
    hService=OpenService(schSCManager,"myService",SERVICE_ALL_ACCESS);
    if (hService == NULL)
      return false;
    if(DeleteService(hService)==0)
      return false;
    if(CloseServiceHandle(hService)==0)
      return false;
  
  return true;
  }
  </code></pre>
  
  <p>I have taken this code sample from <a href="http://www.codeproject.com/KB/system/windows_nt_service.aspx?pageflow=FixedWidth" rel="nofollow noreferrer">codeproject</a>.</p>