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. Si elle a la valeur 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 retournée
Si la fonction réussit, la valeur de retour est un handle pour 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étaillées sur l’erreur, 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.
Code de retour | Description |
---|---|
|
L’accès demandé a été refusé. |
|
La base de données spécifiée n’existe pas. |
Remarques
Lorsqu’un processus utilise la fonction OpenSCManager pour ouvrir un handle à une base de données du gestionnaire de contrôle de service, le système effectue une case activée de sécurité avant d’accorder l’accès demandé. Pour plus d’informations, consultez Sécurité du service et droits d’accès.
Si l’utilisateur actuel ne dispose pas d’un accès approprié lors de la connexion à un service sur un autre ordinateur, l’appel de fonction OpenSCManager échoue. Pour vous connecter à un service à distance, appelez la fonction LogonUser avec LOGON32_LOGON_NEW_CREDENTIALS, puis appelez ImpersonateLoggedOnUser avant d’appeler OpenSCManager. Pour plus d’informations sur la connexion aux services à distance, consultez Services et RPC/TCP.
Seuls les processus disposant de privilèges d’administrateur peuvent 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.
Notes
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. La combinaison 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winsvc.h (inclure Windows.h) |
Bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |