Función OpenSCManagerA (winsvc.h)
Establece una conexión con el administrador de control de servicio en el equipo especificado y abre la base de datos del Administrador de control de servicios especificada.
Sintaxis
SC_HANDLE OpenSCManagerA(
[in, optional] LPCSTR lpMachineName,
[in, optional] LPCSTR lpDatabaseName,
[in] DWORD dwDesiredAccess
);
Parámetros
[in, optional] lpMachineName
Nombre del equipo de destino. Si el puntero es NULL o apunta a una cadena vacía, la función se conecta al administrador de control de servicio en el equipo local.
[in, optional] lpDatabaseName
Nombre de la base de datos del administrador de control de servicios. Este parámetro debe establecerse en SERVICES_ACTIVE_DATABASE. Si es NULL, la base de datos SERVICES_ACTIVE_DATABASE se abre de forma predeterminada.
[in] dwDesiredAccess
Acceso al administrador de control de servicios. Para obtener una lista de los derechos de acceso, consulte Derechos de acceso y seguridad de servicio.
Antes de conceder los derechos de acceso solicitados, el sistema comprueba el token de acceso del proceso de llamada en la lista de control de acceso discrecional del descriptor de seguridad asociado al administrador de control de servicios.
El SC_MANAGER_CONNECT derecho de acceso se especifica implícitamente mediante una llamada a esta función.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador para la base de datos del administrador de control de servicios especificada.
Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.
El SCM puede establecer los siguientes códigos de error. Otras funciones del Registro a las que llama el SCM pueden establecer otros códigos de error.
Código devuelto | Descripción |
---|---|
|
Se denegó el acceso solicitado. |
|
La base de datos especificada no existe. |
Comentarios
Cuando un proceso usa la función OpenSCManager para abrir un identificador en una base de datos de Service Control Manager, el sistema realiza una comprobación de seguridad antes de conceder el acceso solicitado. Para obtener más información, consulte Derechos de acceso y seguridad de servicio.
Si el usuario actual no tiene acceso adecuado al conectarse a un servicio en otro equipo, se produce un error en la llamada a la función OpenSCManager . Para conectarse a un servicio de forma remota, llame a la función LogonUser con LOGON32_LOGON_NEW_CREDENTIALS y, a continuación, llame a ImpersonateLoggedOnUser antes de llamar a OpenSCManager. Para obtener más información sobre cómo conectarse a servicios de forma remota, consulte Servicios y RPC/TCP.
Solo los procesos con privilegios de administrador pueden abrir un identificador de base de datos que puede usar la función CreateService .
El identificador devuelto solo es válido para el proceso que llamó a la función OpenSCManager . Se puede cerrar llamando a la función CloseServiceHandle .
Ejemplos
Para obtener un ejemplo, consulte Cambio de la configuración de un servicio.
Nota
El encabezado winsvc.h define OpenSCManager como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winsvc.h (incluye Windows.h) |
Library | Advapi32.lib |
Archivo DLL | Advapi32.dll |