OpenSCManager,函数建立了一个到服务控制管理器的连接,并打开指定的数据库。
简介
function OpenSCManager(
lpMachineName: PChar,
lpDatabaseName: PChar,
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
参数
lpMachineName
指向零终止字符串,指定目标计算机的名称。如果该
指针为NULL ,或者它指向一个
空字符串,那么该函数连接到本地计算机上的服务控制管理器。
lpDatabaseName
指向零终止字符串,指定将要打开的服务控制管理数据库的名称。此字符串应被置
为 SERVICES_ACTIVE_DATABASE。如果该指针为NULL ,则打开默认的 SERVICES_ACTIVE_DATABASE
数据库。
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 参数无效。