OpenSCManager
The OpenSCManager function establishes a connection to the service control manager on the specified computer and opens the specified service control manager database.
SC_HANDLE OpenSCManager( LPCTSTR lpMachineName, LPCTSTR lpDatabaseName, DWORD dwDesiredAccess );
Parameters
-
lpMachineName
- [in] Pointer to a null-terminated string that specifies the name of the target computer. If the pointer is NULL or points to an empty string, the function connects to the service control manager on the local computer. lpDatabaseName
- [in] Pointer to a null-terminated string that specifies the name of the service control manager database to open. This parameter should be set to SERVICES_ACTIVE_DATABASE. If it is NULL, the SERVICES_ACTIVE_DATABASE database is opened by default. dwDesiredAccess
-
[in] Access to the service control manager. For a list of access rights, see
Service Security and Access Rights.
Before granting the requested access rights, the system checks the access token of the calling process against the discretionary access-control list of the security descriptor associated with the service control manager.
The SC_MANAGER_CONNECT access right is implicitly specified by calling this function.
Return Values
If the function succeeds, the return value is a handle to the specified service control manager database.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
The following error codes can be set by the SCM. Other error codes can be set by the registry functions that are called by the SCM.
| Return code | Description |
|---|---|
| ERROR_ACCESS_DENIED | The requested access was denied. |
| ERROR_DATABASE_DOES_NOT_EXIST | The specified database does not exist. |
| ERROR_INVALID_PARAMETER | A specified parameter is invalid. |
Remarks
When a process uses the OpenSCManager function to open a handle to a service control manager database, the system performs a security check before granting the requested access. For more information, see Service Security and Access Rights.
Only processes with Administrator privileges are able to open a database handle that can be used by the CreateService and LockServiceDatabase functions.
The returned handle is only valid for the process that called the OpenSCManager function. It can be closed by calling the CloseServiceHandle function.
Example Code
For an example, see Opening an SCManager Database.
Requirements
| Client | Requires Windows XP, Windows 2000 Professional, or Windows NT Workstation. |
|---|---|
| Server | Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server. |
| Header | Declared in Winsvc.h; include Windows.h. |
| Library | Link to Advapi32.lib. |
| DLL | Requires Advapi32.dll. |
| Unicode | Implemented as OpenSCManagerW (Unicode) and OpenSCManagerA (ANSI). |
本文介绍了OpenSCManager函数,该函数可建立与指定计算机上服务控制管理器的连接并打开指定数据库。文中说明了其参数、返回值,成功时返回数据库句柄,失败为NULL。还提及系统会进行安全检查,仅管理员权限进程可用于特定操作,句柄可通过CloseServiceHandle关闭。
7767

被折叠的 条评论
为什么被折叠?



