Annotation of mstools/samples/service/instsrv.c, revision 1.1.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.