Funzione OpenSCManagerA (winsvc.h)
Stabilisce una connessione al gestore di controllo del servizio nel computer specificato e apre il database di gestione del controllo del servizio specificato.
Sintassi
SC_HANDLE OpenSCManagerA(
[in, optional] LPCSTR lpMachineName,
[in, optional] LPCSTR 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 del controllo del servizio. Per un elenco dei diritti di accesso, vedere Sicurezza del servizio 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 degli accessi discrezionali del descrittore di sicurezza associato al gestore del 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 |
---|---|
|
L'accesso richiesto è stato negato. |
|
Il database specificato non esiste. |
Commenti
Quando un processo usa la funzione OpenSCManager per aprire un handle a un database di gestione controllo del servizio, 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 remoto, 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 sono in grado di 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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
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 |