Fonction OpenServiceA (winsvc.h)
Ouvre un service existant.
Syntaxe
SC_HANDLE OpenServiceA(
[in] SC_HANDLE hSCManager,
[in] LPCSTR lpServiceName,
[in] DWORD dwDesiredAccess
);
Paramètres
[in] hSCManager
Handle de la base de données du gestionnaire de contrôle de service. La fonction OpenSCManager retourne ce handle. Pour plus d’informations, consultez Sécurité des services et droits d’accès.
[in] lpServiceName
Nom du service à ouvrir. Il s’agit du nom spécifié par le paramètre lpServiceName de la fonction CreateService lors de la création de l’objet de service, et non par le nom d’affichage du service affiché par les applications d’interface utilisateur pour identifier le service.
La longueur maximale de chaîne est de 256 caractères. La base de données du gestionnaire de contrôle de service conserve la casse des caractères, mais les comparaisons de noms de service ne respectent toujours pas la casse. La barre oblique (/) et la barre oblique inverse (\) sont des caractères de nom de service non valides.
[in] dwDesiredAccess
Accès au service. Pour obtenir la liste des droits d’accès, consultez Sécurité du service et droits d’accès.
Avant d’accorder l’accès demandé, 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é à l’objet de service.
Valeur retournée
Si la fonction réussit, la valeur de retour est un handle pour le service.
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 gestionnaire de contrôle de service. D’autres peuvent être définies par les fonctions de Registre appelées par le gestionnaire de contrôle de service.
Code de retour | Description |
---|---|
|
Le handle n’a pas accès au service. |
|
Le handle spécifié n’est pas valide. |
|
Le nom de service spécifié n’est pas valide. |
|
Le service spécifié n’existe pas. |
Remarques
Le handle retourné est valide uniquement pour le processus appelé OpenService. Il peut être fermé en appelant la fonction CloseServiceHandle .
Pour utiliser OpenService, aucun privilège n’est requis à l’exception de SC_MANAGER_CONNECT.
Exemples
Pour obtenir un exemple, consultez Démarrage d’un service.
Notes
L’en-tête winsvc.h définit OpenService comme un 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.
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 |