Partager via


OpenServiceW, fonction (winsvc.h)

Ouvre un service existant.

Syntaxe

SC_HANDLE OpenServiceW(
  [in] SC_HANDLE hSCManager,
  [in] LPCWSTR   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 lorsque l’objet de service a été créé, et non le nom d’affichage du service affiché par les applications d’interface utilisateur pour identifier le service.

La longueur maximale de la chaîne est de 256 caractères. La base de données du gestionnaire de contrôle de service conserve le cas des caractères, mais les comparaisons de noms de service ne respectent toujours pas la casse. Les barres obliques (/) et les barres obliques inverses (\) 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é des services 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 de retour

Si la fonction réussit, la valeur de retour est un handle au service.

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 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.

Retourner le code 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é n’est valide que pour le processus appelé OpenService. Il peut être fermé en appelant la fonction CloseServiceHandle .

Pour utiliser OpenService, aucun privilège n’est requis en dehors de SC_MANAGER_CONNECT.

Exemples

Pour obtenir un exemple, consultez Démarrage d’un service.

Note

L’en-tête winsvc.h définit OpenService comme 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

ChangeServiceConfig

closeServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

handles SCM

Fonctions de service

setServiceObjectSecurity

startService