[Win32] SCManager 服务控制管理器API(1)

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/47803033

前言:我之前写过一个“Win32服务开发四部曲“,如下:

[Win32] 服务程序开发(1)基本概念和服务程序的框架
[Win32] 服务程序开发(2)Session 0隔离(上)
[Win32] 服务程序开发(3)Session 0隔离(下)创建SYSTEM权限可交互进程
[Win32] 服务程序开发(4)自定义控制码与服务通信

我当时说,编写的服务程序可以使用SCManager API来安装,控制,下面我们来看看SCManager API的具体用法。

1。OpenSCManager 打开服务控制管理器
函数原型:

SC_HANDLE WINAPI OpenSCManager(
  _In_opt_ LPCTSTR lpMachineName,
  _In_opt_ LPCTSTR lpDatabaseName,
  _In_     DWORD   dwDesiredAccess
);
lpMachineName:置NULL
lpDatabaseName:服务控制管理器数据库,NULL表示默认数据库
dwDesiredAccess:访问权限

SC_MANAGER_ALL_ACCESS:包括 STANDARD_RIGHTS_REQUIRED,除了在此表中的所有访问权限之外。

SC_MANAGER_CREATE_SERVICE:需要调用 CreateService 函数来创建一个服务。

SC_MANAGER_CONNECT:需要连接到服务控制管理器。

SC_MANAGER_ENUMERATE_SERVICE:需要调用 EnumServicesStatus 或 EnumServicesStatusEx 函数列出数据库中的服务。
需要调用 NotifyServiceStatusChange 函数来接收当创建或删除任何服务时的通知。

SC_MANAGER_LOCK:需要调用 LockServiceDatabase 函数来获取对数据库的锁定。

SC_MANAGER_MODIFY_BOOT_CONFIG:需要调用 NotifyBootConfigStatus 函数。

SC_MANAGER_QUERY_LOCK_STATUS:需要调用 QueryServiceLockStatus 函数来检索数据库的锁状态信息。

返回值:如果打开成功返回服务控制管理器的句柄,失败返回NULL

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值