Table ServiceInstall

La table ServiceInstall est utilisée pour installer un service et contient les colonnes suivantes.

Colonne Type Clé Nullable
ServiceInstall Identificateur O N
Nom Formatted N N
DisplayName Formatted N O
ServiceType DoubleInteger N N
StartType DoubleInteger N N
ErrorControl DoubleInteger N N
LoadOrderGroup Formatted N O
Les dépendances Formatted N O
StartName Formatted N O
Mot de passe Formatted N O
Arguments Formatted N O
Component_ Identificateur N N
Description Formatted N O

 

Colonnes

ServiceInstall

Il s’agit de la clé primaire de la table.

Nom

Cette colonne est la chaîne qui donne le nom du service à installer. Cette 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 arrière (\) 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. Cette chaîne a une longueur maximale de 256 caractères. Le gestionnaire de contrôle de service conserve la casse du nom d’affichage, mais les comparaisons de noms d’affichage 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 Un service Microsoft Win32 qui exécute son propre processus.
SERVICE_WIN32_SHARE_PROCESS 0x00000020 Service Win32 qui partage un processus.
SERVICE_INTERACTIVE_PROCESS 0x00000100 Un 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 chauffeur.
SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Un 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 fonction StartService.
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 (value = 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 Consigne l’erreur et continue avec l’opération de démarrage.
SERVICE_ERROR_NORMAL 0x00000001 Consigne l’erreur, affiche une boîte de message et poursuit l’opération de démarrage.
SERVICE_ERROR_CRITICAL 0x00000003 Consigne l’erreur si elle est possible et si le système est redémarré avec la dernière configuration connue pour être correcte. Si la dernière configuration connue est en cours de démarrage, l’opération de démarrage échoue.

 

LoadOrderGroup

Cette colonne contient la chaîne qui nomme le groupe d’ordre de charge dont ce service est membre. Spécifiez Null ou une chaîne vide si le service n’appartient pas à un groupe.

Dependencies

Cette colonne est une liste de noms de services ou de groupes d’ordre de charge que le système doit démarrer avant ce service. Séparez les noms dans la liste par valeurs Null. Si le service n’a aucune dépendance, 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 s’exécute 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 Dependencies. 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 d’un signe + 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 dans 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 la plupart des services laissent donc cette colonne vide.

Password

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 pas de mot de passe si StartName a la valeur Null ou est 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, de sorte que la plupart des services laissent cette colonne vide.

Notez qu’après avoir supprimé un service qui a été 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, qui est stocké dans une partie protégée du système. L’action personnalisée acquiert le mot de passe en invitant l’utilisateur, en lisant une propriété à partir de la base de données ou en lisant 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 1 de la table Component. Notez que, pour installer ce service à l’aide de la table InstallService, le KeyPath de ce composant doit être le fichier exécutable du service.

Description

Cette colonne contient une description localisable du service en cours de configuration. Si cette colonne est laissée vide, le programme d’installation utilise la description existante du service, le cas échéant. 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. Il en résulte une description vide pour un service nouveau ou existant.

Notes

L’action InstallerServices dans les tables de séquence traite les informations contenues dans cette table. Pour plus d’informations sur l’utilisation des tables de séquence, consultez Utilisation d’une table de séquence.

Cette table contient la plupart des paramètres de la fonction CreateService Win32.

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 créer un problème de sécurité, un conflit de mot de passe ou la perte de données de configuration lors du redémarrage du système.

Pour supprimer un service pendant 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 Event. Le programme d’installation ne supprime pas de 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 table MsiLockPermissionsEx.

Validation

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69