windows api函数:OpenSCManager

来源:百度文库 编辑:神马文学网 时间:2024/04/29 20:57:55
function OpenSCManager(lpMachineName, lpDatabaseName: PChar;
  dwDesiredAccess: DWORD): SC_HANDLE; stdcall;

说明
函数建立了一个连接到服务控制管理器,并打开指定的数据库。

参数

lpMachineName
      指向零终止字符串,命名为目标计算机。如果该指针为NULL ,或者如果它指向一个空字符串,函数连接到服务控制管理器在本地计算机上。

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检索功能锁定状态信息的数据库。

返回值
    如果函数成功,返回值是一个句柄指定的服务控制管理器数据库。如果函数失败,返回值为NULL 。要获得扩展错误信息,请使用GetLastError 获德错误代码。

错误代码
ERROR_ACCESS_DENIED 访问被拒绝.
ERROR_DATABASE_DOES_NOT_EXIST 指定的数据库不存在。
ERROR_INVALID_PARAMETER  参数无效。

【jink2005】
据我了解,OpenSCManager函数是在创建一个服务对象(CreateService),并且把它加入到中要调用的API。上文介绍这个函数的说明。关于服务管理数据库,我是第一次接触,在另一帖子中进行了学习:

Windows服务:服务控制管理器(SCM)、服务控制程序(SCP)、服务程序和服务配置程序