OpenSCManagerW, 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 OpenSCManagerW(
[in, optional] LPCWSTR lpMachineName,
[in, optional] LPCWSTR 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 |
---|---|
|
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 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 |