chSQLServer="MSSQLSERVER";
chFtpServer="MSFTPSVC";
chIIsServer="W3SVC";
SC_HANDLE hHandle=::OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
SC_HANDLE hService;
if(hHandle==NULL)//创建句柄失败
{ //检查服务失败
AfxMessageBox("检查IIS服务失败!");
}
ENUM_SERVICE_STATUS service;
DWORD dwBytesNeeded=0;
DWORD dwServicesReturned=0;
DWORD dwResumedHandle=0;
DWORD dwServiceType=SERVICE_WIN32; //只读取WIN32服务|SERVICE_DRIVER;
char * chServiceName;
char * chFind;
BOOL bResult;
bool bHasService=false;
chFind="MSSQLSERVER";
//chFind="MSFTPSVC";
chFind=_strupr(_strdup(chFind));
//查找服务列表
bResult=::EnumServicesStatus(hHandle,
dwServiceType,
SERVICE_STATE_ALL,
&service,
sizeof(ENUM_SERVICE_STATUS),
&dwBytesNeeded,
&dwServicesReturned,
&dwResumedHandle);
if(!bResult)
{
//获取应需要的内存空间
if(GetLastError()==ERROR_MORE_DATA)
{
DWORD dwBytes=sizeof(ENUM_SERVICE_STATUS)+dwBytesNeeded;
ENUM_SERVICE_STATUS *pServices=NULL;
pServices=new ENUM_SERVICE_STATUS[dwBytes];
//获取服务列表
EnumServicesStatus(hHandle,
dwServiceType,
SERVICE_STATE_ALL,
pServices,
dwBytes,
&dwBytesNeeded,
&dwServicesReturned,
&dwResumedHandle);
//提取每个列表
for(unsigned iIndex=0;iIndex<dwServicesReturned;iIndex++)
{
//chServiceName=(pServices+iIndex)->lpDisplayName;
//AfxMessageBox((pServices+iIndex)->lpDisplayName);
chServiceName=_strupr(_strdup((pServices+iIndex)->lpServiceName));
if(strcmp(chFind,chServiceName)==0)
{
switch((pServices+iIndex)->ServiceStatus.dwCurrentState)
{
case SERVICE_STOPPED:
//启动Ftp
hService= OpenService(hHandle,chServiceName,SERVICE_ALL_ACCESS);
if(hService==0)
{
AfxMessageBox("无法启动Ftp");
}
else
{
bResult=StartService(hService,0,NULL);
if(!bResult)
{
AfxMessageBox("无法启动Ftp");
}
else
{
AfxMessageBox("已经成功启动了Ftp");
}
CloseServiceHandle(hService);
}
break;
case SERVICE_RUNNING:
AfxMessageBox("Ftp正在运行中");
//GetNewSiteName("默认网站",NULL);
break;
}
bHasService=true;
free(chServiceName);
break; //退出循环
}
free(chServiceName);
}
delete[] pServices;
pServices=NULL;
}
CloseServiceHandle(hHandle);
}
else
{
AfxMessageBox("检查Ftp服务失败!");
}
free(chFind);
if(!bHasService)
{
AfxMessageBox("你的计算机还没有安装Ftp");
}
}