Condividi tramite


Funzione OpenServiceA (winsvc.h)

Apre un servizio esistente.

Sintassi

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

Parametri

[in] hSCManager

Handle per il database di Gestione controllo dei servizi. La funzione OpenSCManager restituisce questo handle. Per altre informazioni, vedere Service Security and Access Rights.

[in] lpServiceName

Nome del servizio da aprire. Questo è il nome specificato dal parametro lpServiceName della funzione CreateService quando è stato creato l'oggetto servizio, non il nome visualizzato del servizio visualizzato visualizzato dalle applicazioni dell'interfaccia utente per identificare il servizio.

La lunghezza massima della stringa è di 256 caratteri. Il database di Gestione controllo dei servizi mantiene la distinzione tra maiuscole e minuscole, ma i confronti dei nomi del servizio non fanno sempre distinzione tra maiuscole e minuscole. La barra (/) e la barra rovesciata (\) non sono caratteri di nome del servizio non validi.

[in] dwDesiredAccess

Accesso al servizio. Per un elenco dei diritti di accesso, vedere Service Security and Access Rights.

Prima di concedere l'accesso richiesto, il sistema controlla il token di accesso del processo chiamante rispetto all'elenco di controllo di accesso discrezionale del descrittore di sicurezza associato all'oggetto servizio.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un handle per il servizio.

Se la funzione ha esito negativo, il valore restituito è NULL. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

I codici di errore seguenti possono essere impostati dal gestore di controllo del servizio. Altri possono essere impostati dalle funzioni del Registro di sistema chiamate dal gestore del controllo del servizio.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'handle non ha accesso al servizio.
ERROR_INVALID_HANDLE
L'handle specificato non è valido.
ERROR_INVALID_NAME
Il nome del servizio specificato non è valido.
ERROR_SERVICE_DOES_NOT_EXIST
Il servizio specificato non esiste.

Osservazioni

L'handle restituito è valido solo per il processo denominato OpenService. Può essere chiuso chiamando la funzione CloseServiceHandle .

Per usare OpenService, non sono necessari privilegi a parte SC_MANAGER_CONNECT.

Esempi

Per un esempio, vedere Avvio di un servizio.

Nota

L'intestazione winsvc.h definisce OpenService come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione winsvc.h (include Windows.h)
libreria Advapi32.lib
dll Advapi32.dll

Vedere anche

ChangeServiceConfig

CloseServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

handle SCM

Funzioni del servizio

SetServiceObjectSecurity

StartService