Condividi tramite


Funzione OpenSCManagerW (winsvc.h)

Stabilisce una connessione alla gestione controllo del servizio nel computer specificato e apre il database di gestione controllo del servizio specificato.

Sintassi

SC_HANDLE OpenSCManagerW(
  [in, optional] LPCWSTR lpMachineName,
  [in, optional] LPCWSTR lpDatabaseName,
  [in]           DWORD   dwDesiredAccess
);

Parametri

[in, optional] lpMachineName

Il nome del computer di destinazione. Se il puntatore è NULL o punta a una stringa vuota, la funzione si connette alla gestione controllo del servizio nel computer locale.

[in, optional] lpDatabaseName

Nome del database di Gestione controllo del servizio. Questo parametro deve essere impostato su SERVICES_ACTIVE_DATABASE. Se è NULL, il database SERVICES_ACTIVE_DATABASE viene aperto per impostazione predefinita.

[in] dwDesiredAccess

Accesso al gestore di controllo del servizio. Per un elenco dei diritti di accesso, vedere Sicurezza dei servizi e diritti di accesso.

Prima di concedere i diritti di accesso richiesti, il sistema controlla il token di accesso del processo chiamante rispetto all'elenco di controllo di accesso discrezionale del descrittore di sicurezza associato al gestore di controllo del servizio.

Il diritto di accesso SC_MANAGER_CONNECT viene specificato in modo implicito chiamando questa funzione.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un handle per il database di gestione controllo del servizio specificato.

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

I codici di errore seguenti possono essere impostati da SCM. Altri codici di errore possono essere impostati dalle funzioni del Registro di sistema chiamate da SCM.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
Accesso richiesto negato.
ERROR_DATABASE_DOES_NOT_EXIST
Il database specificato non esiste.

Commenti

Quando un processo usa la funzione OpenSCManager per aprire un handle a un database di Gestione controllo dei servizi, il sistema esegue un controllo di sicurezza prima di concedere l'accesso richiesto. Per altre informazioni, vedere Sicurezza del servizio e diritti di accesso.

Se l'utente corrente non ha accesso appropriato durante la connessione a un servizio in un altro computer, la chiamata di funzione OpenSCManager ha esito negativo. Per connettersi a un servizio in modalità remota, chiamare la funzione LogonUser con LOGON32_LOGON_NEW_CREDENTIALS e quindi chiamare ImpersonateLoggedOnUser prima di chiamare OpenSCManager. Per altre informazioni sulla connessione ai servizi in remoto, vedere Servizi e RPC/TCP.

Solo i processi con privilegi di amministratore possono aprire un handle di database che può essere usato dalla funzione CreateService .

L'handle restituito è valido solo per il processo che ha chiamato la funzione OpenSCManager . Può essere chiuso chiamando la funzione CloseServiceHandle .

Esempio

Per un esempio, vedere Modifica della configurazione di un servizio.

Nota

L'intestazione winsvc.h definisce OpenSCManager 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winsvc.h (include Windows.h)
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

CloseServiceHandle

CreateService

EnumServicesStatusEx

Openservice

Handle SCM

Funzioni del servizio