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
ERROR_ACCESS_DENIED
Le handle n’a pas accès au service.
ERROR_INVALID_HANDLE
Le handle spécifié n’est pas valide.
ERROR_INVALID_NAME
Le nom de service spécifié n’est pas valide.
ERROR_SERVICE_DOES_NOT_EXIST
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

Voir aussi

ChangeServiceConfig

CloseServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

SCM Handles

Fonctions de service

SetServiceObjectSecurity

StartService