windows服务操作
来源:互联网 发布:淘宝购物运费险怎么退 编辑:程序博客网 时间:2024/05/23 19:13
在平时的开发的过程中会涉及到一些系统服务或用户自定义服务的操作.下面主要从两方面简单讲述服务的操作:
一. 对现有服务的操作:
1.任务的服务操作第一步必须打开服务管理对象: OpenSCManager();
2.通过"服务显示名称"(Display Name)获取"服务名称"(Service Name): GetServiceKeyName();
显示名称可以直接打开系统服务上面直接看到,入下图:
3.对打开的服务进行停止,暂停等操作:ControlService ();
4.开启服务: StartService();
5.最后就是对打开的服务句柄进行关闭释放资源操作: CloseServiceHandle()
二. 创建新的服务:
创建一个新的服务: CreateService();返回的是新服务的句柄,然后可以调用上述的函数对服务进行操作.
如果需要删服务则直接调用: DeleteService()删除服务;
下面以Wireless Zero Configuration服务为例对现有系统服务进行开启和停止操作,代码如下:
SC_HANDLE scHandle = NULL;SC_HANDLE hService = NULL;SERVICE_STATUS status;char szSvName[32] = {'\0'};DWORD dwLen = 32;//打开服务管理对象scHandle = OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS); if (scHandle){//获取指定服务的服务名if(GetServiceKeyName(scHandle,"Wireless Zero Configuration",szSvName,&dwLen)){hService = OpenService(scHandle,szSvName,SC_MANAGER_ALL_ACCESS); //打开服务if(hService){// 获得服务的状态if( ::QueryServiceStatus( scHandle, &status) == FALSE){ ::CloseServiceHandle( hService);::CloseServiceHandle( scHandle); return; } //如果处于停止状态则启动服务,否则停止服务。 if( status.dwCurrentState == SERVICE_RUNNING) { // 停止服务 if( ::ControlService( hService,SERVICE_CONTROL_STOP, &status) == FALSE) { ::CloseServiceHandle( hService);::CloseServiceHandle( scHandle); return; } // 等待服务停止 while( ::QueryServiceStatus( hService, &status) == TRUE) { ::Sleep( status.dwWaitHint); if( status.dwCurrentState == SERVICE_STOPPED) { ::CloseServiceHandle( hService);::CloseServiceHandle( scHandle); return; } } } else if( status.dwCurrentState == SERVICE_STOPPED) { // 启动服务 if( ::StartService( hService, NULL, NULL) == FALSE) { ::CloseServiceHandle( hService);::CloseServiceHandle( scHandle); return; } // 等待服务启动 while( ::QueryServiceStatus( hService, &status) == TRUE) { ::Sleep( status.dwWaitHint); if( status.dwCurrentState == SERVICE_RUNNING) { ::CloseServiceHandle( hService);::CloseServiceHandle( scHandle); return; } } } ::CloseServiceHandle( hService);}}}::CloseServiceHandle( scHandle);
- windows服务的操作
- Windows服务操作
- ServiceController操作Windows服务
- windows服务操作
- windows删除服务操作
- ServiceController操作Windows服务
- C#操作windows服务
- ServiceController操作Windows服务
- Windows 服务操作
- ServiceController操作Windows服务
- windows服务管理操作
- ServiceController操作Windows服务
- ServiceController操作Windows服务 监控Windows服务
- windows服务操作之---安装服务
- windows服务操作之---删除服务
- windows 服务操作(可弹框)
- C#对Windows服务操作(注册安装服务,卸载服务,启动停止服务,判断服务存在)
- delphi操作windows COM+组件服务一
- Redis命令总结
- wincvs提交时出错:cvs commit: sticky tag `HEAD' for file `XXX' is not a branch
- windows7下,打开doc和xlsx文件时出现“向程序发送命令时出现问题”
- java删除一个目录下面的所有文件
- 【转】VC窗口刷新InvalidateRect和UpdateWindow RedrawWindow
- windows服务操作
- ExtJS中常用的Ajax方法参数介绍
- 一步一步教你实现CTreeCtrl 自绘
- Linux进程状态解析之R、S、D、T、Z
- 随机生成20个字符串,然后排序
- 电子邮件头解析
- 重装Mindjet MindManager时报错,提示没有权限访问某个目录
- 邓亚峰 Deep Learning 简介
- Java中HashMap遍历的两种方式