📄 ntservice.cpp
字号:
// NTService.cpp: implementation of the CNTService class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "bqq.h"
#include "NTService.h"
#include <Winsvc.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CNTService::CNTService()
{
}
CNTService::~CNTService()
{
}
//static BOOL CNTService::StopService(LPCSTR sComputerName, LPCSTR sServiceName)
BOOL CNTService::StopService(LPCSTR sComputerName, LPCSTR sServiceName)
{
SC_HANDLE hSCManager = OpenSCManager(sComputerName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
if ( hSCManager == NULL )
return FALSE;
SC_HANDLE messengerService = OpenService( hSCManager, sServiceName, SERVICE_STOP );
CloseServiceHandle(hSCManager);
if ( messengerService == NULL )
return FALSE;
SERVICE_STATUS serviceStatus ;
if ( !ControlService(messengerService, SERVICE_CONTROL_STOP, &serviceStatus) )
return FALSE;
CloseServiceHandle(messengerService);
return TRUE;
}
//static BOOL CNTService::IsWindowsNT()
BOOL CNTService::IsWindowsNT()
{
return (GetVersion() < 0x80000000) ; // Windows NT/2000, Whistler
}
//static BOOL CNTService::IsServiceStarted(LPCSTR sComputerName, LPCSTR sServiceName)
int CNTService::IsServiceStarted(LPCSTR sComputerName, LPCSTR sServiceName)
{
SC_HANDLE hSCManager = OpenSCManager(sComputerName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
if ( hSCManager == NULL )
return 0;
SC_HANDLE messengerService = OpenService( hSCManager, sServiceName, SERVICE_QUERY_STATUS );
if ( messengerService == NULL )
{
CloseServiceHandle(hSCManager);
return 0;
}
SERVICE_STATUS serviceStatus ;
if ( !QueryServiceStatus(messengerService, &serviceStatus) )
{
CloseServiceHandle(hSCManager);
CloseServiceHandle(messengerService);
return 0;
}
CloseServiceHandle(hSCManager);
CloseServiceHandle(messengerService);
if(serviceStatus.dwCurrentState == SERVICE_RUNNING)
return 1;
else if (serviceStatus.dwCurrentState == SERVICE_STOPPED)
return 2;
return 3;
}
BOOL CNTService::StartMService(LPCSTR sComputerName, LPCSTR sServiceName)
{
SC_HANDLE hSCManager = OpenSCManager(sComputerName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
if ( hSCManager == NULL )
return FALSE;
SC_HANDLE messengerService = OpenService( hSCManager, sServiceName, GENERIC_READ | GENERIC_EXECUTE );
if ( messengerService == NULL )
{
CloseServiceHandle(hSCManager);
return FALSE;
}
SERVICE_STATUS serviceStatus ;
if ( !QueryServiceStatus(messengerService, &serviceStatus) )
{
CloseServiceHandle(messengerService);
CloseServiceHandle(hSCManager);
return FALSE;
}
if(serviceStatus.dwCurrentState ==SERVICE_STOPPED)
{
if ( !StartService(messengerService, 0, NULL) )
{
CloseServiceHandle(messengerService);
CloseServiceHandle(hSCManager);
return FALSE;
}
}
CloseServiceHandle(messengerService);
CloseServiceHandle(hSCManager);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -