C++ Windows Service Error 1063

12,580

This post answers correctly. As long as you do not start the service "as a service" it will not work.

You need to register it. To do so, look at this file, it is the Apple bonjour service implementation, which is open source.

It gives a good idea of what must be done to install a service. Especially the method InstallService - and RemoveService (if you want to remove it).

Share:
12,580

Related videos on Youtube

JimmySmithJR
Author by

JimmySmithJR

Updated on July 14, 2022

Comments

  • JimmySmithJR
    JimmySmithJR almost 2 years

    Trying to develop my first windows service, and I'm debugging in windows 7 MS VC++ 10.0. As soon as it calls, StartServiceCtrlDispatcher(), I get an error 1063 and it says Access is Denied. I am administrator, how exactly do I get passed this? I'm new to services. Thanks. Code:

    // For WinXp, don't forget to link to
    // Advapi32.lib library if needed...
    
    #define _WIN32_WINNT 0x0501
    
    #include <windows.h>
    
    #include <stdio.h>
    #include <tchar.h>
    
    // Prototypes, just empty skeletons...
    
    void SvcDebugOut(LPSTR String, DWORD Status);
    void  WINAPI MyServiceCtrlHandler(DWORD opcode);
    void  MyServiceStart(DWORD argc, LPTSTR *argv);
    DWORD MyServiceInitialization(DWORD argc, LPTSTR *argv, DWORD *specificError);
    
    void main() 
    {
    
           // Using 2-D array as a table...
    
           // The name of a service to be run in this service process - "MyService",
    
           // The function as the starting point for a service - MyServiceStart or
    
           // a pointer to a ServiceMain() function...
    
           // The members of the last entry in the table must have NULL values
    
           // to designate the end of the table...
    
           SERVICE_TABLE_ENTRY  DispatchTable[] = {{_TEXT("MyService"), (LPSERVICE_MAIN_FUNCTION)MyServiceStart}, {NULL, NULL}};
       if (!StartServiceCtrlDispatcher(DispatchTable))
           SvcDebugOut("StartServiceCtrlDispatcher() failed, error: %d\n", GetLastError());
       else
           printf("StartServiceCtrlDispatcher() looks OK.\n");
       return;
    } 
    
    // ==========================================================================
    // Prototype definitions...just skeletons here...
    void  WINAPI MyServiceCtrlHandler(DWORD opcode)
    {
           // Service control information here...
           return;
    }
    
    void  MyServiceStart(DWORD argc, LPTSTR *argv)
    {
           // Starting service information here...
           return;
    }
    
    
    
    DWORD MyServiceInitialization(DWORD argc, LPTSTR *argv, DWORD *specificError)
    {
           // Service initialization information here...
           return 0;
    }
    
    // Very simple info to the standard output...
    void SvcDebugOut(LPSTR String, DWORD Status)
    {
       CHAR  Buffer[1024];
       printf("In SvcDebugOut() lol!\n");
       if (strlen(String) < 1000)
       {
          sprintf(Buffer, String, Status);
          OutputDebugStringA(Buffer);
       }
       else 
          printf("String too long...\n");
       return;
    }