///////////////////////////////////////////////////////////////////////////////
//服务管理器-命令行版//
//日期:2007/06/08//
//作者:冷风//
//文件:Server.cpp//
//信箱:xo0888@Tom.com//
//QQ:121121606//
//说明:若有问题请访问Blog.csdn.net/chinafe偶可以提供免费技术支持呵呵//
///////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<windows.h>
#include<Winsvc.h>
BOOLDisplayServices();
voidAddServices();
voidDelServices();
voidStopServices();
voidStartServices();
main()
{
inti=10;
while(i!=0)
{
printf("**************************************************** ");
printf("服务管理器-命令行版 ");
printf("作者:冷风2007.6.8 ");
printf("**************************************************** ");
printf("查看服务请输入1 ");
printf("添加服务请输入2 ");
printf("删除服务请输入3 ");
printf("停止服务请输入4 ");
printf("启动服务请输入5 ");
printf("退出程序请输入0 ");
scanf("%d",&i);
if(1==i)
{
DisplayServices();
}
if(2==i)
{
AddServices();
}
if(3==i)
{
DelServices();
}
if(4==i)
{
StopServices();
}
if(5==i)
{
StartServices();
}
}
return0;
}
BOOLDisplayServices()
{
LPENUM_SERVICE_STATUSlpServices=NULL;
DWORDnSize=0;
DWORDnServicesReturned;
DWORDnResumeHandle=0;
DWORDdwServiceType=SERVICE_WIN32;
SC_HANDLEschSCManager=NULL;
BOOLFlag=FALSE;
DWORDi=0;
UINTj=0;
schSCManager=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(schSCManager==NULL)//FailToOpenSCM
{
printf("FailToOpenSCM ");
returnFALSE;
}
lpServices=(LPENUM_SERVICE_STATUS)LocalAlloc(LPTR,64*1024);//AllocateRam
if(lpServices==NULL)//FailToAllocateRam
{
printf("FailToAllocateRam ");
gotoCleanUP;
}
//EnumAllServiceBasedOnServiceType
if(EnumServicesStatus(schSCManager,
dwServiceType,
SERVICE_STATE_ALL,
(LPENUM_SERVICE_STATUS)lpServices,
64*1024,
&nSize,
&nServicesReturned,
&nResumeHandle)==NULL)
{
printf("FailToEnumService ");
gotoCleanUP;
}
//DisplayTheServices
printf("%-34s%s ","ServiceName","DisplayName");
for(i=0;i<nServicesReturned;i++)
{
printf("%d:%-32s%s ",++j,lpServices[i].lpServiceName,lpServices[i].lpDisplayName);
}
Flag=TRUE;
//CloseServiceHandle,FreeAllocatedRamAndReturnToTheCaller
CleanUP:
CloseServiceHandle(schSCManager);
if(lpServices!=NULL)
{
LocalFree(lpServices);
}
getchar();
returnFlag;
}
voidAddServices()
{
charname[100];
charinfo[200];
charpath[300];
printf("请输入服务名 ");
scanf("%s",&name);
printf("请输入服务描述 ");
scanf("%s",&info);
printf("请输入程序路径 ");
scanf("%s",&path);
SC_HANDLEmanager=NULL;
SC_HANDLEservice=NULL;
if((manager=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE))==NULL)
{
printf("OpenSCManagerError");
}
service=CreateService(
manager,name,info,
SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,
path,0,0,0,0,0);
if(service)
printf("服务创建成功 ");
else
printf("服务创建失败 ");
CloseServiceHandle(service);
CloseServiceHandle(manager);
}
voidDelServices()
{
charname[100];
SC_HANDLEscm;
SC_HANDLEservice;
SERVICE_STATUSstatus;
printf("请输入要删除的服务名 ");
scanf("%s",&name);
if((scm=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE))==NULL)
{
printf("OpenSCManagerError ");
}
service=OpenService(scm,name,SERVICE_ALL_ACCESS|DELETE);
if(!service)
{
printf("OpenServiceerror! ");
return;
}
BOOLisSuccess=QueryServiceStatus(service,&status);
if(!isSuccess)
{
printf("QueryServiceStatuserror! ");
return;
}
if(status.dwCurrentState!=SERVICE_STOPPED)
{
isSuccess=ControlService(service,SERVICE_CONTROL_STOP,&status);
if(!isSuccess)
printf("StopServiceerror! ");
Sleep(500);
}
isSuccess=DeleteService(service);
if(!isSuccess)
printf("删除服务失败! ");
else
printf("删除服务成功! ");
CloseServiceHandle(service);
CloseServiceHandle(scm);
}
voidStopServices()
{
charname[100];
SC_HANDLEscm;
SC_HANDLEservice;
SERVICE_STATUSstatus;
printf("请输入要停止的服务名 ");
scanf("%s",&name);
if((scm=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE))==NULL)
{
printf("OpenSCManagerError ");
}
service=OpenService(scm,name,SERVICE_ALL_ACCESS|DELETE);
if(!service)
{
printf("OpenServiceerror! ");
return;
}
BOOLisSuccess=QueryServiceStatus(service,&status);
if(!isSuccess)
{
printf("QueryServiceStatuserror! ");
return;
}
if(status.dwCurrentState!=SERVICE_STOPPED)
{
isSuccess=ControlService(service,SERVICE_CONTROL_STOP,&status);
if(!isSuccess)
printf("服务停止失败! ");
else
printf("服务停止成功! ");
Sleep(500);
}else
{
printf("此服务没有运行! ");
}
}
voidStartServices()
{
charname[100];
SC_HANDLEscm;
SC_HANDLEservice;
SERVICE_STATUSstatus;
printf("请输入要启动的服务名 ");
scanf("%s",&name);
if((scm=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE))==NULL)
{
printf("OpenSCManagerError ");
}
service=OpenService(scm,name,SERVICE_ALL_ACCESS|DELETE);
if(!service)
{
printf("OpenServiceerror! ");
return;
}
BOOLisSuccess=QueryServiceStatus(service,&status);
if(!isSuccess)
{
printf("QueryServiceStatuserror! ");
return;
}
if(status.dwCurrentState==SERVICE_STOPPED)
{
isSuccess=StartService(service,0,NULL);
if(!isSuccess)
printf("服务启动失败! ");
else
printf("服务启动成功! ");
}else
{
printf("此服务正在运行! ");
}
}
相关推荐
完善的图书馆管理系统的VC源代码,计算机专业课程设计,源代码涉及面广,是非常难得的学习资料,读通代码后你会发现用VC做系统原来这么高效
这是一个非常全面的仓库管理软件源代码。可以满足一般人的需要解压之后大小大约27兆左右
网络五子棋客户端服务器VC源代码 网络五子棋客户端服务器VC源代码 网络五子棋客户端服务器VC源代码 网络五子棋客户端服务器VC源代码 网络五子棋客户端服务器VC源代码 网络五子棋客户端服务器VC源代码 网络五子棋...
USB View VC源代码 USB View VC源代码 USB View VC源代码
游戏斗地主VC源代码
自动停靠窗体VC源代码 有磁性的窗体 吸附窗体
摘要:VC/C++源码,数据库应用,工资管理,管理系统 工资管理系统VC+Access版源代码,运行截图如上所示,调试测试请注意:登录的用户和密码均为KJS。
litestep 桌面管理软件 VC 源代码。 这个是软件源码。用于代替window的桌面。 litestep 桌面管理 软件 VC源代码
关于VC的N多个程序源代码.全部都是全部代码都是经过编译的,放心使用
vc源代码可以实现定时关机盒事件提醒
用vc编的学生管理系统,完成学生信息的管理,学生成绩的管理
学习如何编写Windows Service 服务程序的很好例子,可以直接在例子的基础上修改并编译运行,实用性很强. 运行环境: Windows NT/2000/XP 例子程序示例了如何在Windows NT/2000/XP系统中create, start, stop, 和 delete ...
动态截获,并显示,正在运行的其他窗口的界面内容的VC源代码学习
全排列 VC 源代码 全排列 VC 源代码 全排列 VC 源代码
二维码vc 源代码 二维码vc 源代码 二维码vc 源代码 二维码vc 源代码
包含股票软件源代码和详细注释。股票软件含有多技术指标显示、分组行情排序、策略报表、动态计算、股票历史数据转换导出等丰富的证券分析功能。包含股票软件源代码和详细注释。本股票软件含有多技术指标显示、分组...
实现了一个功能简单的HTTP代理服务器,主要介绍多线程编程相关的知识,包括初始化临界段和删除临界段,使用临界段完成多个线程对临界资源的互斥访问,创建工作线程,退出工作线程,定义和设定事件,利用事件完成多个...
VC代码 CButtonST_demo (实用代码源)VC代码 CButtonST_demo (实用代码源)VC代码 CButtonST_demo (实用代码源)VC代码 CButtonST_demo (实用代码源)VC代码 CButtonST_demo (实用代码源)VC代码 CButtonST_demo (实用...
键盘记录器vc 源代码键盘记录器vc 源代码键盘记录器vc 源代码键盘记录器vc 源代码
VC代码 supergrid (实用代码源)VC代码 supergrid (实用代码源)VC代码 supergrid (实用代码源)VC代码 supergrid (实用代码源)VC代码 supergrid (实用代码源)VC代码 supergrid (实用代码源)VC代码 supergrid (实用代码...