//SvcCtrl.cpp : Service Console
#include <stdio.h>
#include <windows.h>
//----------------------------------------
void printHelp()
{
printf("Service Console V1.0\n");
printf("Landray Software Department\n");
printf("by Zhenglh 2003-02-27\n");
printf("\n\n");
printf("SvcCtrl \n");
printf("\t-i Filename ServiceName\t\t\"Install new service\"\n");
printf("\t-u ServiceName\t\t\t\"Remove existing service\"\n");
printf("\t-s ServiceName [Param]\t\t\"Start not-active service with params\"\n");
printf("\t-t ServiceName\t\t\t\"Stop running service\"\n");
printf("\t-p ServiceName\t\t\t\"Pause running service\"\n");
printf("\t-c ServiceName\t\t\t\"Continue paused service\"\n");
}
//----------------------------------------
void install(char* pFileName, char* pServiceName)
{
SC_HANDLE schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_CREATE_SERVICE);
if (schSCManager==0)
{
long nError = GetLastError();
printf("OpenSCManager failed, error code = %d\n", nError);
}
else
{
SC_HANDLE schService = CreateService
(
schSCManager, /* SCManager database */
pServiceName, /* name of service */
pServiceName, /* service name to display */
SERVICE_ALL_ACCESS, /* desired access */
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS , /* service type */
SERVICE_AUTO_START, /* start type */
SERVICE_ERROR_NORMAL, /* error control type */
pFileName, /* service's binary */
NULL, /* no load ordering group */
NULL, /* no tag identifier */
NULL, /* no dependencies */
NULL, /* LocalSystem account */
NULL /* no password */
);
if (schService==0)
{
printf("Failed to create service \"%s\"\n", pServiceName);
}
else
{
printf("Service \"%s\" is installed\n", pServiceName);
CloseServiceHandle(schService);
}
CloseServiceHandle(schSCManager);
}
}
//----------------------------------------
void uninstall(char* pServiceName)
{
SC_HANDLE schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (schSCManager==0)
{
long nError = GetLastError();
printf("OpenSCManager failed, error code = %d\n", nError);
}
else
{
SC_HANDLE schService = OpenService( schSCManager, pServiceName, SERVICE_ALL_ACCESS);
if (schService==0)
{
long nError = GetLastError();
printf("OpenService failed, error code = %d\n",nError);
}
else
{
if (!DeleteService(schService))
printf("Failed to delete service \"%s\"\n", pServiceName);
else
printf("Service \"%s\" is removed\n",pServiceName);
CloseServiceHandle(schService);
}
CloseServiceHandle(schSCManager);
}
}
//----------------------------------------
void start(char* pServiceName, int nArg, char** pArg)
{
SC_HANDLE schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (schSCManager==0)
{
long nError = GetLastError();
printf("OpenSCManager failed, error code = %d\n", nError);
}
else
{
SC_HANDLE schService = OpenService( schSCManager, pServiceName, SERVICE_ALL_ACCESS);
if (schService==0)
{
long nError = GetLastError();
printf("OpenService failed, error code = %d\n",nError);
}
else
{
if (!StartService(schService, nArg, (const char**)pArg))
printf("Failed to start service \"%s\"\n", pServiceName);
else
printf("Service \"%s\" is started now\n",pServiceName);
CloseServiceHandle(schService);
}
CloseServiceHandle(schSCManager);
}
}
//----------------------------------------
void control(char* pServiceName, DWORD action)
{
SERVICE_STATUS status;
SC_HANDLE schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (schSCManager==0)
{
long nError = GetLastError();
printf("OpenSCManager failed, error code = %d\n", nError);
}
else
{
SC_HANDLE schService = OpenService( schSCManager, pServiceName, SERVICE_ALL_ACCESS);
if (schService==0)
{
long nError = GetLastError();
printf("OpenService failed, error code = %d\n",nError);
}
else
{
switch (action)
{
case SERVICE_CONTROL_STOP:
if (!ControlService(schService, action, &status))
printf("Failed to stop service \"%s\"\n", pServiceName);
else
printf("Service \"%s\" is stopped now\n",pServiceName);
break;
case SERVICE_CONTROL_PAUSE:
if (!ControlService(schService, action, &status))
printf("Failed to pause service \"%s\"\n", pServiceName);
else
printf("Service \"%s\" is paused now\n",pServiceName);
break;
case SERVICE_CONTROL_CONTINUE:
if (!ControlService(schService, action, &status))
printf("Failed to continue service \"%s\"\n", pServiceName);
else
printf("Service \"%s\" is running now\n",pServiceName);
}
CloseServiceHandle(schService);
}
CloseServiceHandle(schSCManager);
}
}
//----------------------------------------
void main (int argc, char *argv[])
{
if ((argc >= 4) && (_stricmp("-i",argv[1])==0))
{
install(argv[2], argv[3]);
}
else if ((argc >= 3) && (_stricmp("-u",argv[1])==0))
{
uninstall(argv[2]);
}
else if ((argc >= 3) && (_stricmp("-s",argv[1])==0))
{
start(argv[2], argc-3, argc>3?(&(argv[3])):NULL);
}
else if ((argc >= 3) && (_stricmp("-t",argv[1])==0))
{
control(argv[2], SERVICE_CONTROL_STOP);
}
else if ((argc >= 3) && (_stricmp("-p",argv[1])==0))
{
control(argv[2], SERVICE_CONTROL_PAUSE);
}
else if ((argc >= 3) && (_stricmp("-c",argv[1])==0))
{
control(argv[2], SERVICE_CONTROL_CONTINUE);
}
else
{
printHelp();
}
}

我虽横行却不霸道
- 粉丝: 111
最新资源
- 人工神经网络概述及其在分类中的应用举例.doc
- 分析电力自动化技术在电力工程中的运用(1).docx
- 数据库管理系统及应用(1).pdf
- 通信工程学生实习报告(1).doc
- 第6章构建通信系统仿真模型(1).ppt
- 高中等效平衡教学jsp省公开课一等奖全国示范课微课金奖PPT课件(1).pptx
- 新区社会事业资源配置市场网络建设投标书模板.doc
- 集团公司网络安全解决专项方案.doc
- 图像处理课后习题答案.doc
- 信息化教学大赛说课省公共课一等奖全国赛课获奖课件.pptx
- PLC轧钢机程设计.docx
- 全国计算机等级考试二级公共基础知识考纲(1).docx
- 十个问答带你快速进入大数据圈(1).docx
- 大酒店管理软件专项方案.doc
- 水塔水位的PLC控制.doc
- 江苏省外籍人员个人所得税征管软件客户端操作基础手册版.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


