前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++安装、删除、启动服务

C++安装、删除、启动服务

作者头像
Sindsun
发布2018-04-28 10:52:34
2.1K0
发布2018-04-28 10:52:34
举报
文章被收录于专栏:狂码一生狂码一生
代码语言:javascript
复制
/*
名称:系统服务管理
语言:C++
介绍:对Windows系统服务的状态获取,服务暂停,开启,停止操作代码
*/
void?CStartServiceDlg::OnBnClickedButton1()
{
???????//?打开服务管理对象
????SC_HANDLE?hSC?=?::OpenSCManager(?NULL,?
????????????????????????NULL,?GENERIC_EXECUTE);
????if(?hSC?==?NULL)
????{
????????TRACE(?"open?SCManager?error");
????????return;
????}
????//?打开www服务。
????SC_HANDLE?hSvc?=?::OpenService(?hSC,?"W3SVC",
????????SERVICE_START?|?SERVICE_QUERY_STATUS?|?SERVICE_STOP);
????if(?hSvc?==?NULL)
????{
????????TRACE(?"Open?www?erron。");
????????::CloseServiceHandle(?hSC);
????????return;
????}
????//?获得服务的状态
????SERVICE_STATUS?status;
????if(?::QueryServiceStatus(?hSvc,?&status)?==?FALSE)
????{
????????TRACE(?"Get?Service?state?error。");
????????::CloseServiceHandle(?hSvc);
????????::CloseServiceHandle(?hSC);
????????return;
????}
????//如果处于停止状态则启动服务,否则停止服务。
????if(?status.dwCurrentState?==?SERVICE_RUNNING)
????{
????????//?停止服务
????????if(?::ControlService(?hSvc,?
??????????SERVICE_CONTROL_STOP,?&status)?==?FALSE)
????????{
????????????TRACE(?"stop?service?error。");
????????????::CloseServiceHandle(?hSvc);
????????????::CloseServiceHandle(?hSC);
????????????return;
????????}
????????//?等待服务停止
????????while(?::QueryServiceStatus(?hSvc,?&status)?==?TRUE)
????????{
????????????::Sleep(?status.dwWaitHint);
????????????if(?status.dwCurrentState?==?SERVICE_STOPPED)
????????????{
????????????????AfxMessageBox(?"stop?success。");
????????????????::CloseServiceHandle(?hSvc);
????????????????::CloseServiceHandle(?hSC);
????????????????return;
????????????}
????????}
????}
????else?if(?status.dwCurrentState?==?SERVICE_STOPPED)
????{
????????//?启动服务
????????if(?::StartService(?hSvc,?NULL,?NULL)?==?FALSE)
????????{
????????????TRACE(?"start?service?error。");
????????????::CloseServiceHandle(?hSvc);
????????????::CloseServiceHandle(?hSC);
????????????return;
????????}
????????//?等待服务启动
????????while(?::QueryServiceStatus(?hSvc,?&status)?==?TRUE)
????????{
????????????::Sleep(?status.dwWaitHint);
????????????if(?status.dwCurrentState?==?SERVICE_RUNNING)
????????????{
????????????????AfxMessageBox(?"start?success。");
????????????????::CloseServiceHandle(?hSvc);
????????????????::CloseServiceHandle(?hSC);
????????????????return;
????????????}
??????}
????}
????TRACE(?"start?error。");
????::CloseServiceHandle(?hSvc);
????::CloseServiceHandle(?hSC);
????return;
}                   

版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编], 转载请备注出处:http://www.sindsun.com/article-details-36.html [若此文确切存在侵权,请联系本站管理员进行删除!]

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com