如何将程序注册系统服务

来源:互联网 发布:windows 系统修复 编辑:程序博客网 时间:2024/04/26 15:31

关于sc命令的使用: 

*** Unrecognized Command ***
DESCRIPTION:
 SC is a command line program used for communicating with the
 NT Service Controller and services.
USAGE:
 sc <server> [command] [service name] <option1> <option2>...

 The option <server> has the form "//ServerName"
 Further help on commands can be obtained by typing: "sc [command]"
 Commands:
   query-----------Queries the status for a service, or
                   enumerates the status for types of services.
   queryex---------Queries the extended status for a service, or
                   enumerates the status for types of services.
   start-----------Starts a service.
   pause-----------Sends a PAUSE control request to a service.
   interrogate-----Sends an INTERROGATE control request to a service.
   continue--------Sends a CONTINUE control request to a service.
   stop------------Sends a STOP request to a service.
   config----------Changes the configuration of a service (persistant).
   description-----Changes the description of a service.
   failure---------Changes the actions taken by a service upon failure.
   qc--------------Queries the configuration information for a service.
   qdescription----Queries the description for a service.
   qfailure--------Queries the actions taken by a service upon failure.
   delete----------Deletes a service (from the registry).
   create----------Creates a service. (adds it to the registry).
   control---------Sends a control to a service.
   sdshow----------Displays a service's security descriptor.
   sdset-----------Sets a service's security descriptor.
   GetDisplayName--Gets the DisplayName for a service.
   GetKeyName------Gets the ServiceKeyName for a service.
   EnumDepend------Enumerates Service Dependencies.

 The following commands don't require a service name:
 sc <server> <command> <option>
   boot------------(ok | bad) Indicates whether the last boot should
                   be saved as the last-known-good boot configuration
   Lock------------Locks the Service Database
   QueryLock-------Queries the LockStatus for the SCManager Database
EXAMPLE:
 sc start MyService

Would you like to see help for the QUERY and QUERYEX commands? [ y | n ]:
QUERY and QUERYEX OPTIONS :
 If the query command is followed by a service name, the status
 for that service is returned.  Further options do not apply in
 this case.  If the query command is followed by nothing or one of
 the options listed below, the services are enumerated.
    type=    Type of services to enumerate (driver, service, all)
             (default = service)
    state=   State of services to enumerate (inactive, all)
             (default = active)
    bufsize= The size (in bytes) of the enumeration buffer
             (default = 4096)
    ri=      The resume index number at which to begin the enumeration
             (default = 0)
    group=   Service group to enumerate
             (default = all groups)
SYNTAX EXAMPLES
sc query                - Enumerates status for active services & drivers
sc query messenger      - Displays status for the messenger service
sc queryex messenger    - Displays extended status for the messenger service
sc query type= driver   - Enumerates only active drivers
sc query type= service  - Enumerates only Win32 services
sc query state= all     - Enumerates all services & drivers
sc query bufsize= 50    - Enumerates with a 50 byte buffer.
sc query ri= 14         - Enumerates with resume index = 14
sc queryex group= ""    - Enumerates active services not in a group
sc query type= service type= interact - Enumerates all interactive services
sc query type= driver group= NDIS     - Enumerates all NDIS drivers

 

#include <stdio.h>
#include 
<stdlib.h>

int main(int argc, char *argv[])
{
    
if(argc != 3)
    
{
        printf(
"usage %s ServerName ServerPath ",argv[0]);
        
return -1;
    }

    
char order[100];
    sprintf(order,
"sc create %s binPath= %s start= auto",argv[1],argv[2]);//(等号后面的空格必须)
    printf("%s ",order);
    system(order); 
    
//system("sc delete test"); //删除服务  
    return 0;
}