Partager via


OpenSCManagerA, fonction (winsvc.h)

Établit une connexion au gestionnaire de contrôle de service sur l’ordinateur spécifié et ouvre la base de données du gestionnaire de contrôle de service spécifiée.

Syntaxe

SC_HANDLE OpenSCManagerA(
  [in, optional] LPCSTR lpMachineName,
  [in, optional] LPCSTR lpDatabaseName,
  [in]           DWORD  dwDesiredAccess
);

Paramètres

[in, optional] lpMachineName

Nom de l’ordinateur cible. Si le pointeur a la valeur NULL ou pointe vers une chaîne vide, la fonction se connecte au gestionnaire de contrôle de service sur l’ordinateur local.

[in, optional] lpDatabaseName

Nom de la base de données du gestionnaire de contrôle de service. Ce paramètre doit être défini sur SERVICES_ACTIVE_DATABASE. S’il s’agit de NULL, la base de données SERVICES_ACTIVE_DATABASE est ouverte par défaut.

[in] dwDesiredAccess

Accès au gestionnaire de contrôle de service. Pour obtenir la liste des droits d’accès, consultez Sécurité des services et droits d’accès.

Avant d’accorder les droits d’accès demandés, le système vérifie le jeton d’accès du processus appelant par rapport à la liste de contrôle d’accès discrétionnaire du descripteur de sécurité associé au gestionnaire de contrôle de service.

Le droit d’accès SC_MANAGER_CONNECT est implicitement spécifié en appelant cette fonction.

Valeur de retour

Si la fonction réussit, la valeur de retour est un handle de la base de données du gestionnaire de contrôle de service spécifiée.

Si la fonction échoue, la valeur de retour est NULL. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Les codes d’erreur suivants peuvent être définis par le SCM. D’autres codes d’erreur peuvent être définis par les fonctions de Registre appelées par le SCM.

Retourner le code Description
ERROR_ACCESS_DENIED
L’accès demandé a été refusé.
ERROR_DATABASE_DOES_NOT_EXIST
La base de données spécifiée n’existe pas.

Remarques

Lorsqu’un processus utilise la fonction OpenSCManager pour ouvrir un handle dans une base de données du gestionnaire de contrôle de service, le système effectue un contrôle de sécurité avant d’accorder l’accès demandé. Pour plus d’informations, consultez Sécurité des services et droits d’accès.

Si l’utilisateur actuel n’a pas d’accès approprié lors de la connexion à un service sur un autre ordinateur, l'OpenSCManager appel de fonction échoue. Pour vous connecter à distance à un service, appelez la fonction LogonUser avec LOGON32_LOGON_NEW_CREDENTIALS, puis appelez ImpersonateLoggedOnUser avant d’appeler OpenSCManager. Pour plus d’informations sur la connexion à distance aux services, consultez Services et RPC/TCP.

Seuls les processus disposant de privilèges d’administrateur sont en mesure d’ouvrir un handle de base de données qui peut être utilisé par la fonction CreateService.

Le handle retourné est valide uniquement pour le processus qui a appelé la fonction OpenSCManager. Il peut être fermé en appelant la fonction CloseServiceHandle .

Exemples

Pour obtenir un exemple, consultez modification de la configuration d’un service.

Note

L’en-tête winsvc.h définit OpenSCManager en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winsvc.h (inclure Windows.h)
bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

closeServiceHandle

CreateService

EnumServicesStatusEx

OpenService

handles SCM

Fonctions de service