Annotation of mstools/samples/service/instsrv.c, revision 1.1

1.1     ! root        1: 
        !             2: /******************************************************************************\
        !             3: *       This is a part of the Microsoft Source Code Samples. 
        !             4: *       Copyright (C) 1993 Microsoft Corporation.
        !             5: *       All rights reserved. 
        !             6: *       This source code is only intended as a supplement to 
        !             7: *       Microsoft Development Tools and/or WinHelp documentation.
        !             8: *       See these sources for detailed information regarding the 
        !             9: *       Microsoft samples programs.
        !            10: \******************************************************************************/
        !            11: 
        !            12: ///////////////////////////////////////////////////////
        !            13: //
        !            14: //  InstSrv.c --
        !            15: //
        !            16: //      This program demonstrates the use of the OpenSCManager and
        !            17: //      CreateService APIs to install the Simple service sample.
        !            18: //
        !            19: #include <windows.h>
        !            20: #include <stdio.h>
        !            21: #include <stdlib.h>
        !            22: #include <string.h>
        !            23: 
        !            24: SC_HANDLE   schService;
        !            25: SC_HANDLE   schSCManager;
        !            26: 
        !            27: VOID
        !            28: InstallService(LPCTSTR serviceName, LPCTSTR serviceExe)
        !            29: {
        !            30:     LPCTSTR lpszBinaryPathName = serviceExe;
        !            31: 
        !            32:     schService = CreateService(
        !            33:         schSCManager,               // SCManager database
        !            34:         serviceName,                // name of service
        !            35:         serviceName,                // name to display (new parameter after october beta)
        !            36:         SERVICE_ALL_ACCESS,         // desired access
        !            37:         SERVICE_WIN32_OWN_PROCESS,  // service type
        !            38:         SERVICE_DEMAND_START,       // start type
        !            39:         SERVICE_ERROR_NORMAL,       // error control type
        !            40:         lpszBinaryPathName,         // service's binary
        !            41:         NULL,                       // no load ordering group
        !            42:         NULL,                       // no tag identifier
        !            43:         NULL,                       // no dependencies
        !            44:         NULL,                       // LocalSystem account
        !            45:         NULL);                      // no password
        !            46: 
        !            47:     if (schService == NULL) {
        !            48:         printf("failure: CreateService (0x%02x)\n", GetLastError());
        !            49:         return;
        !            50:     } else
        !            51:         printf("CreateService SUCCESS\n");
        !            52: 
        !            53:     CloseServiceHandle(schService);
        !            54: }
        !            55: 
        !            56: VOID
        !            57: RemoveService(LPCTSTR serviceName)
        !            58: {
        !            59:     BOOL    ret;
        !            60: 
        !            61:     schService = OpenService(schSCManager, serviceName, SERVICE_ALL_ACCESS);
        !            62: 
        !            63:     if (schService == NULL) {
        !            64:         printf("failure: OpenService (0x%02x)\n", GetLastError());
        !            65:         return;
        !            66:     }
        !            67: 
        !            68:     ret = DeleteService(schService);
        !            69: 
        !            70:     if (ret)
        !            71:         printf("DeleteService SUCCESS\n");
        !            72:     else
        !            73:         printf("failure: DeleteService (0x%02x)\n", GetLastError());
        !            74: }
        !            75: 
        !            76: VOID
        !            77: main(int argc, char *argv[])
        !            78: {
        !            79:     if (argc != 3) {
        !            80:         printf("usage: instsrv <service name> <exe location>\n");
        !            81:         printf("           to install a service, or:\n");
        !            82:         printf("       instsrv <service name> remove\n");
        !            83:         printf("           to remove a service\n");
        !            84:         exit(1);
        !            85:     }
        !            86: 
        !            87:     schSCManager = OpenSCManager(
        !            88:                         NULL,                   // machine (NULL == local)
        !            89:                         NULL,                   // database (NULL == default)
        !            90:                         SC_MANAGER_ALL_ACCESS   // access required
        !            91:                         );
        !            92: 
        !            93:     if (!stricmp(argv[2], "remove"))
        !            94:         RemoveService(argv[1]);
        !            95:     else
        !            96:         InstallService(argv[1], argv[2]);
        !            97: 
        !            98:     CloseServiceHandle(schSCManager);
        !            99: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.