windows NT 服务程序的创建,删除,启动,停止
来源:互联网 发布:淘宝店挣钱吗 编辑:程序博客网 时间:2024/06/06 00:54
- /*
- 函数名: RtStatrtService
- 描述:启动一个NT服务,服务名字由参数传入
- lpMachineName 指向零终止字符串,命名为目标计算机。如果该指针为NULL ,或者如果它指向一个空字符串,函数连接到服务控制管理器在本地计算机上
lpServiceName
服务名称
- */
- BOOL RtStatrtService(LPCTSTR lpMachineName,LPCTSTR lpServiceName)
- {
- BOOL bResult = FALSE;
- SC_HANDLE hSCManager = OpenSCManager(lpMachineName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
- if (hSCManager != NULL)
- {
- SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_ALL_ACCESS);
- if (hService != NULL)
- {
- if(StartService(hService, 0, 0))
- {
- bResult = TRUE;
- }
- else
- {
- bResult = FALSE;
- OutputDebugString(_T("start service failed!"));
- }
- CloseServiceHandle(hService);
- }
- CloseServiceHandle(hSCManager);
- }
- return bResult;
- }
- /*
- 函数名: RtStopService
- 描述:停止一个NT服务,服务名字由参数传入
- */
- BOOL RtStopService(LPCTSTR lpMachineName,LPCTSTR lpServiceName)
- {
- BOOL bResult = FALSE;
- SC_HANDLE hSCManager = OpenSCManager(lpMachineName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
- if (hSCManager != NULL)
- {
- SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_ALL_ACCESS);
- if (hService != NULL)
- {
- SERVICE_STATUS ServiceStatus;
- ZeroMemory(&ServiceStatus,sizeof(SERVICE_STATUS));
- ControlService(hService, SERVICE_CONTROL_STOP, &ServiceStatus);
- CloseServiceHandle(hService);
- }
- CloseServiceHandle(hSCManager);
- }
- return bResult;
- }
- /*
- 函数名: RtCreateService
- 描述:创建一个NT服务,服务名字由参数传入
- */
- BOOL RtCreateService(LPCTSTR lpServiceName,LPCTSTR lpDisplayName)
- {
- SC_HANDLE schSCManager;
- SC_HANDLE schService;
- TCHAR szPath[MAX_PATH];
- if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
- {
- printf("Cannot install service (%d)/n", GetLastError());
- return FALSE;
- }
- schSCManager = OpenSCManager(
- NULL, // local computer
- NULL, // ServicesActive database
- SC_MANAGER_ALL_ACCESS); // full access rights
- if (NULL == schSCManager)
- {
- printf("OpenSCManager failed (%d)/n", GetLastError());
- return FALSE;
- }
- // Create the service.
- schService = CreateService(
- schSCManager, // SCM database
- lpServiceName, // name of service
- lpDisplayName, // service name to display
- SERVICE_ALL_ACCESS, // desired access
- SERVICE_WIN32_OWN_PROCESS, // service type
- SERVICE_DEMAND_START, // start type
- SERVICE_ERROR_NORMAL, // error control type
- szPath, // path to service's binary
- NULL, // no load ordering group
- NULL, // no tag identifier
- NULL, // no dependencies
- NULL, // LocalSystem account
- NULL); // no password
- if (schService == NULL)
- {
- printf("CreateService failed (%d)/n", GetLastError());
- CloseServiceHandle(schSCManager);
- return FALSE;
- }
- else printf("Service installed successfully/n");
- CloseServiceHandle(schService);
- CloseServiceHandle(schSCManager);
- return TRUE;
- }
- /*
- 函数名: RtDeleteService
- 描述:删除一个NT服务,服务名字由参数传入
- */
- BOOL RtDeleteService(LPCTSTR lpServiceName)
- {
- SC_HANDLE schSCManager;
- SC_HANDLE schService;
- SERVICE_STATUS ssStatus;
- BOOL bResult = FALSE;
- // Get a handle to the SCM database.
- schSCManager = OpenSCManager(
- NULL, // local computer
- NULL, // ServicesActive database
- SC_MANAGER_ALL_ACCESS); // full access rights
- if (NULL == schSCManager)
- {
- printf("OpenSCManager failed (%d)/n", GetLastError());
- return bResult;
- }
- // Get a handle to the service.
- schService = OpenService(
- schSCManager, // SCM database
- lpServiceName, // name of service
- DELETE); // need delete access
- if (schService == NULL)
- {
- printf("OpenService failed (%d)/n", GetLastError());
- CloseServiceHandle(schSCManager);
- return bResult;
- }
- // Delete the service.
- if (! DeleteService(schService) )
- {
- printf("DeleteService failed (%d)/n", GetLastError());
- }
- else
- {
- bResult = TRUE;
- printf("Service deleted successfully/n");
- }
- CloseServiceHandle(schService);
- CloseServiceHandle(schSCManager);
- return bResult;
- }
- /*
- 函数名: RtStatrtService
- 描述:启动一个NT服务,服务名字由参数传入
- */
- BOOL RtStatrtService(LPCTSTR lpMachineName,LPCTSTR lpServiceName)
- {
- BOOL bResult = FALSE;
- SC_HANDLE hSCManager = OpenSCManager(lpMachineName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
- if (hSCManager != NULL)
- {
- SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_ALL_ACCESS);
- if (hService != NULL)
- {
- if(StartService(hService, 0, 0))
- {
- bResult = TRUE;
- }
- else
- {
- bResult = FALSE;
- OutputDebugString(_T("start service failed!"));
- }
- CloseServiceHandle(hService);
- }
- CloseServiceHandle(hSCManager);
- }
- return bResult;
- }
- /*
- 函数名: RtStopService
- 描述:停止一个NT服务,服务名字由参数传入
- */
- BOOL RtStopService(LPCTSTR lpMachineName,LPCTSTR lpServiceName)
- {
- BOOL bResult = FALSE;
- SC_HANDLE hSCManager = OpenSCManager(lpMachineName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
- if (hSCManager != NULL)
- {
- SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_ALL_ACCESS);
- if (hService != NULL)
- {
- SERVICE_STATUS ServiceStatus;
- ZeroMemory(&ServiceStatus,sizeof(SERVICE_STATUS));
- ControlService(hService, SERVICE_CONTROL_STOP, &ServiceStatus);
- CloseServiceHandle(hService);
- }
- CloseServiceHandle(hSCManager);
- }
- return bResult;
- }
- /*
- 函数名: RtQueryServiceStatus
- 描述:查询服务的状态
- */
- void RtQueryServiceStatus(LPCTSTR lpMachineName,LPCTSTR lpServiceName)
- {
- SC_HANDLE hSCManager = OpenSCManager(lpMachineName, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
- if (hSCManager != NULL)
- {
- SC_HANDLE hService = OpenService(hSCManager, lpServiceName, SERVICE_ALL_ACCESS);
- if (hService != NULL)
- {
- SERVICE_STATUS ServiceStatus;
- ZeroMemory(&ServiceStatus,sizeof(SERVICE_STATUS));
- if(QueryServiceStatus(hService, &ServiceStatus))
- {
- switch (ServiceStatus.dwCurrentState)
- {
- case SERVICE_STOPPED:
- OutputDebugString(_T("Stopped"));
- break;
- case SERVICE_START_PENDING:
- OutputDebugString(_T("Start Pending"));
- break;
- case SERVICE_STOP_PENDING:
- OutputDebugString(_T("Stop Pending"));
- break;
- case SERVICE_RUNNING:
- OutputDebugString(_T("Running"));
- break;
- case SERVICE_CONTINUE_PENDING:
- OutputDebugString(_T("Coninue Pending"));
- break;
- case SERVICE_PAUSE_PENDING:
- OutputDebugString(_T("Pause Pending"));
- break;
- case SERVICE_PAUSED:
- OutputDebugString(_T("Paused"));
- break;
- }
- }
- CloseServiceHandle(hService);
- }
- CloseServiceHandle(hSCManager);
- }
- }
- windows NT 服务程序的创建,删除,启动,停止
- windows NT 服务程序的创建,删除,启动,停止
- VC编程进行windows NT 服务程序的创建,删除,启动,停止 【NT Service编程】
- 命令行创建,删除,启动,停止Windows服务
- NT服务启动Windows程序 -- NTService
- 对NT服务型程序的控制代码。如安装服务、启动、停止服务、取服务状态等。
- 改变Windows NT服务的启动顺序
- windows命令行启动服务、停止服务、删除服务
- WINDOWS NT服务的创建方法
- Windows 服务程序创建与停止
- 删除,启动,停止服务
- windows启动停止服务
- C# 创建Windows(NT)服务
- 启动、停止Windows服务的DOS命令
- windows 创建/启动/删除系统服务
- delphi启动停止windows服务
- C#启动停止windows服务
- C#启动,停止Windows服务
- 在MyEclipse中配置Tomcat服务器
- RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due to mismatched status
- qmodbus win32 使用qt creator编译
- sip 学习一 (概述)
- The processing instruction target matching "[xX][mM][lL]" is not allowed.
- windows NT 服务程序的创建,删除,启动,停止
- swing实现拖拽效果(将本地文件拖拽到程序的文本框中显示内容)
- ubuntu12.04安装nginx1.2.2
- 如何使用名为 Visual Basic 的 32 位程序中的管道
- 简单的 C++ SOCKET编程 ---基于TCP/IP协议(转)
- 几款黑莓开源软件
- RAID的相关知识
- oracle 学习 积累
- 仿京东商城商品图片 缩略图+放大镜效果