ServiceInstall Table
La table ServiceInstall est utilisée pour installer un service et comporte les colonnes suivantes.
Colonne | Type | Clé | Nullable |
---|---|---|---|
ServiceInstall | identificateur | Y | N |
Nom | mise en forme | N | N |
DisplayName | mise en forme | N | Y |
ServiceType | DoubleInteger | N | N |
StartType | DoubleInteger | N | N |
ErrorControl | DoubleInteger | N | N |
LoadOrderGroup | mise en forme | N | Y |
Dépendances | mise en forme | N | Y |
StartName | mise en forme | N | Y |
Mot de passe | mise en forme | N | Y |
Arguments | mise en forme | N | Y |
Composant_ | identificateur | N | N |
Description | mise en forme | N | Y |
Colonnes
-
ServiceInstall
-
Il s’agit de la clé primaire de la table.
-
nom de
-
Cette colonne est la chaîne qui donne le nom du service à installer. La chaîne a une longueur maximale de 256 caractères. La base de données du gestionnaire de contrôle de service conserve la casse des caractères dans le nom du service, mais les comparaisons des noms de service ne respectent pas la casse. La barre oblique (/) et la barre oblique inverse (\) sont des caractères de nom de service non valides.
-
DisplayName
-
Cette colonne est la chaîne localisable que les programmes d’interface utilisateur utilisent pour identifier le service. La chaîne a une longueur maximale de 256 caractères. Le gestionnaire de contrôle de service conserve la casse du nom complet, mais les comparaisons de noms complets ne respectent pas la casse.
-
ServiceType
-
Cette colonne est un ensemble d’indicateurs de bits qui spécifient le type de service. L’un des types de service suivants doit être spécifié dans cette colonne.
Type de service Valeur Description SERVICE_WIN32_OWN_PROCESS 0x00000010 Service Microsoft Win32 qui exécute son propre processus. SERVICE_WIN32_SHARE_PROCESS 0x00000020 Service Win32 qui partage un processus. SERVICE_INTERACTIVE_PROCESS 0x00000100 Service Win32 qui interagit avec le bureau. Cette valeur ne peut pas être utilisée seule et doit être ajoutée à l’un des deux types précédents. La colonne StartName doit être définie sur LocalSystem ou Null lors de l’utilisation de cet indicateur. Les types de service suivants ne sont pas pris en charge.
Type de service Valeur Description SERVICE_KERNEL_DRIVER 0x00000001 Un service de pilote. SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Service de pilote de système de fichiers. -
StartType
-
Cette colonne est un ensemble d’indicateurs de bits qui spécifient quand démarrer le service. L’un des types de démarrage de service suivants doit être spécifié dans cette colonne.
Type de démarrage du service Valeur Description SERVICE_AUTO_START 0x00000002 Un service démarre au démarrage du système. SERVICE_DEMAND_START 0x00000003 Un service démarre lorsque le gestionnaire de contrôle de service appelle la fonctionStartService. SERVICE_DISABLED 0x00000004 Spécifie un service qui ne peut plus être démarré. Windows Installer ne peut pas utiliser les options SERVICE_BOOT_START et SERVICE_SYSTEM_START.
-
ErrorControl
-
Cette colonne spécifie l’action effectuée par le programme de démarrage si le service ne parvient pas à démarrer au démarrage. Ces valeurs affectent les événements ServiceControl StartService pour les services installés. L’un des indicateurs de contrôle d’erreur suivants doit être spécifié dans cette colonne.
L’ajout de la constante msidbServiceInstallErrorControlVital (valeur = 0x08000) aux indicateurs du tableau suivant spécifie que l’installation globale doit échouer si le service ne peut pas être installé dans le système.
Indicateur de contrôle d’erreur Valeur Action du programme de démarrage SERVICE_ERROR_IGNORE 0x00000000 Enregistre l’erreur et continue avec l’opération de démarrage. SERVICE_ERROR_NORMAL 0x00000001 Enregistre l’erreur, affiche une boîte de message et poursuit l’opération de démarrage. SERVICE_ERROR_CRITICAL 0x00000003 Enregistre l’erreur s’il est possible et que le système est redémarré avec la dernière configuration connue pour être correcte. Si la dernière configuration connue est démarrée, l’opération de démarrage échoue. -
LoadOrderGroup
-
Cette colonne contient la chaîne qui nomme le groupe d’ordre de chargement dont ce service est membre. Spécifiez null ou une chaîne vide si le service n’appartient pas à un groupe.
-
dépendances
-
Cette colonne est une liste de noms de services ou de groupes d’ordre de chargement que le système doit démarrer avant ce service. Séparez les noms de la liste par valeurs Null. Si le service n’a pas de dépendances, spécifiez Null ou une chaîne vide. Utilisez la syntaxe [~] pour insérer une valeur Null. La dépendance à un groupe signifie que ce service peut s’exécuter si au moins un membre du groupe est en cours d’exécution après une tentative de démarrage de tous les membres du groupe.
Par exemple, pour exiger que le système démarre service1 et service2, avant de démarrer le service répertorié dans la colonne ServiceInstall, entrez service1[~]service2[~][~] dans la colonne Dépendances. Les identificateurs service1 et service2 doivent se produire dans la clé primaire de la table ou être le nom du service déjà installé.
Vous devez préfixer les noms de groupes avec + afin qu’ils puissent être distingués d’un nom de service. Pour exiger que le système démarre service1 et au moins un membre du groupe de commandes MyGroup avant de démarrer le service répertorié dans la colonne ServiceInstall, entrez service1[~]+MyGroup[~][~].
-
StartName
-
Le service est connecté en tant que nom donné par la chaîne de cette colonne. Si le type de service est SERVICE_WIN32_OWN_PROCESS utilisez un nom de compte sous la forme : DomainName\UserName. Si le compte appartient au domaine intégré, il est autorisé à spécifier .\UserName. Le compte LocalSystem doit être utilisé si le type de service est SERVICE_WIN32_SHARE_PROCESS ou SERVICE_INTERACTIVE_PROCESS. La fonction CreateService utilise le compte LocalSystem si StartName est spécifié comme null et que la plupart des services laissent donc cette colonne vide.
-
mot de passe
-
Cette chaîne est le mot de passe du nom de compte spécifié dans la colonne StartName. Notez que l’utilisateur doit disposer des autorisations nécessaires pour se connecter en tant que service. Le service n’a aucun mot de passe si StartName a la valeur Null ou une chaîne vide. Le nom de début de LocalSystem est null et, par conséquent, le mot de passe de cette instance est null. La plupart des services laissent donc cette colonne vide.
Notez qu’après la suppression d’un service installé avec un nom d’utilisateur et un mot de passe, le programme d’installation ne peut pas restaurer le service sans utiliser d’abord une action personnalisée pour obtenir le mot de passe. Le programme d’installation peut acquérir toutes les informations nécessaires sur le service, à l’exception du mot de passe stocké dans une partie protégée du système. L’action personnalisée acquiert le mot de passe en invitant l’utilisateur, à lire une propriété à partir de la base de données ou à lire un fichier. L’action personnalisée doit ensuite appeler ChangeServiceConfig, pour fournir le mot de passe, avant de réinstaller le service.
Windows Installer n’écrit pas la valeur entrée dans le champ Mot de passe dans le fichier journal.
-
arguments
-
Cette colonne contient tous les arguments ou propriétés de ligne de commande requis pour exécuter le service.
-
Component_
-
Clé externe à la colonne de l’une des de la table de composants. Notez que pour installer ce service à l’aide de la table InstallService, keyPath pour ce composant doit être le fichier exécutable du service.
-
Description
-
Cette colonne contient une description localisable pour le service en cours de configuration. Si cette colonne est laissée vide, le programme d’installation utilise la description existante du service s’il en existe un. Pour plus d’informations, consultez SERVICE_DESCRIPTION dans le Kit de développement logiciel (SDK) Microsoft Windows. Pour effacer une description existante, entrez « [~] » dans cette colonne. Cela entraîne une description vide pour un service nouveau ou existant.
Remarques
L’action InstallServices dans tables de séquences traite les informations de cette table. Pour plus d’informations sur l’utilisation de tables de séquences , consultez Utilisation d’une table de séquences.
Ce tableau présente la plupart des paramètres de la fonction CreateServiceWin32.
Bien qu’il soit possible d’utiliser l’interface utilisateur pour spécifier qu’un service doit être installé en tant qu’exécution à partir de la source, le programme d’installation ne prend pas en charge ce type d’installation. Les services qui s’exécutent avec le niveau de privilège du système local doivent être installés pour s’exécuter à partir du disque dur local. Évitez d’installer des services qui empruntent l’identité des privilèges d’un utilisateur particulier, car cela peut écrire des données de sécurité dans un journal ou le registre système. Cela peut potentiellement créer un problème de sécurité, un conflit de mot de passe ou la perte de données de configuration lorsque le système est redémarré.
Pour supprimer un service lors d’une désinstallation, il doit y avoir un enregistrement correspondant pour le service dans la table ServiceControl et l’indicateur msidbServiceControlEventUninstallDelete doit apparaître dans la colonne Événement. Le programme d’installation ne supprime pas un service dans la table ServiceInstall pendant la désinstallation sans cette entrée dans la table ServiceControl.
Pour plus d’informations sur la sécurisation d’un service, consultez la MsiLockPermissionsEx Table.
Validation