function OpenSCManager(lpMachineName, lpDatabaseName: PChar;
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
说明
函数建立了一个连接到服务控制管理器,并打开指定的数据库。
参数
lpMachineName
lpDatabaseName
指向零终止字符串,名称的服务控制管理数据库,以开放。此字符串应指定ServicesActive 。如果该指针为NULL ,该ServicesActive数据库默认情况下打开。
dwDesiredAccess
指定服务的访问控制管理。才准予进入的要求,系统会检查访问令牌的调用进程对任意
访问控制列表的
安全描述符与服务控制管理器对象。访问类型的SC_MANAGER_CONNECT是含蓄地指明调用这个函数。此外,任何或所有下列服务控制管理器对象的访问类型可以指定:
SC_MANAGER_ALL_ACCESS
包括STANDARD_RIGHTS_REQUIRED ,除了所有类型的访问此表中列出。
SC_MANAGER_CONNECT
可以连接到服务控制管理器。
SC_MANAGER_CREATE_SERVICE
使要求的
CreateService函数创建一个服务对象,并将其添加到数据库中。
SC_MANAGER_ENUMERATE_SERVICE
使要求的
EnumServicesStatus功能清单的服务,这是在数据库中。
SC_MANAGER_LOCK
使要求的LockServiceDatabase功能获得锁定数据库。
SC_MANAGER_QUERY_LOCK_STATUS
使要求的QueryServiceLockStatus检索功能锁定状态信息的数据库。
返回值
错误代码
ERROR_ACCESS_DENIED 访问被拒绝.
ERROR_DATABASE_DOES_NOT_EXIST 指定的数据库不存在。
ERROR_INVALID_PARAMETER 参数无效。
【jink2005】
据我了解,OpenSCManager函数是在创建一个服务对象(
CreateService),并且把它加入到中要调用的API。上文介绍这个函数的说明。关于服务管理数据库,我是第一
次接触,在另一帖子中进行了学习:
Windows服务:服务控制管理器(SCM)、服务控制程序(SCP)、服务程序和服务配置程序