Función OpenServiceA (winsvc.h)

Abre un servicio existente.

Sintaxis

SC_HANDLE OpenServiceA(
  [in] SC_HANDLE hSCManager,
  [in] LPCSTR    lpServiceName,
  [in] DWORD     dwDesiredAccess
);

Parámetros

[in] hSCManager

Identificador de la base de datos del administrador de control de servicios. La función OpenSCManager devuelve este identificador. Para obtener más información, consulte Derechos de acceso y seguridad del servicio.

[in] lpServiceName

Nombre del servicio que se va a abrir. Este es el nombre especificado por el parámetro lpServiceName de la función CreateService cuando se creó el objeto de servicio, no el nombre para mostrar del servicio que muestran las aplicaciones de interfaz de usuario para identificar el servicio.

La longitud máxima de la cadena es de 256 caracteres. La base de datos del Administrador de control de servicios conserva las mayúsculas y minúsculas de los caracteres, pero las comparaciones de nombres de servicio siempre distinguen mayúsculas de minúsculas. La barra diagonal (/) y la barra diagonal inversa (\) no son caracteres de nombre de servicio no válidos.

[in] dwDesiredAccess

Acceso al servicio. Para obtener una lista de los derechos de acceso, consulte Derechos de acceso y seguridad del servicio.

Antes de conceder el acceso solicitado, 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 objeto de servicio.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un identificador para el servicio.

Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.

El administrador de control de servicios puede establecer los siguientes códigos de error. Otras pueden establecerse mediante las funciones del Registro a las que llama el administrador de control de servicios.

Código devuelto Descripción
ERROR_ACCESS_DENIED
El identificador no tiene acceso al servicio.
ERROR_INVALID_HANDLE
El identificador especificado no es válido.
ERROR_INVALID_NAME
El nombre de servicio especificado no es válido.
ERROR_SERVICE_DOES_NOT_EXIST
El servicio especificado no existe.

Comentarios

El identificador devuelto solo es válido para el proceso que llamó a OpenService. Se puede cerrar llamando a la función CloseServiceHandle .

Para usar OpenService, no se requieren privilegios aparte de SC_MANAGER_CONNECT.

Ejemplos

Para obtener un ejemplo, consulte Inicio de un servicio.

Nota

El encabezado winsvc.h define OpenService 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o 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

Consulte también

ChangeServiceConfig

CloseServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

Identificadores de SCM

Funciones de servicio

SetServiceObjectSecurity

StartService