ServiceInstall-Tabelle
Die Tabelle ServiceInstall wird zum Installieren eines Diensts verwendet und enthält die folgenden Spalten.
| Spalte | Typ | Schlüssel | Nullwerte zulässig |
|---|---|---|---|
| ServiceInstall | Identifier | J | N |
| Name | Formatiert | N | N |
| DisplayName | Formatiert | N | J |
| ServiceType | DoubleInteger | N | N |
| StartType | DoubleInteger | N | N |
| ErrorControl | DoubleInteger | N | N |
| LoadOrderGroup | Formatiert | N | J |
| Abhängigkeiten | Formatiert | N | J |
| StartName | Formatiert | N | J |
| Kennwort | Formatiert | N | J |
| Argumente | Formatiert | N | J |
| Komponente_ | Identifier | N | N |
| BESCHREIBUNG | Formatiert | N | J |
Spalten
-
ServiceInstall
-
Dies ist der Primärschlüssel für die Tabelle.
-
Namen
-
Diese Spalte ist die Zeichenfolge, die den zu installierenden Dienstnamen angibt. Die Zeichenfolge hat eine maximale Länge von 256 Zeichen. Die Dienststeuerungs-Manager-Datenbank behält die Groß-/Kleinschreibung der Zeichen im Dienstnamen bei, bei Vergleichen von Dienstnamen wird jedoch die Groß-/Kleinschreibung nicht beachtet. Schrägstriche (/) und Zurück-Schrägstriche ( \ ) sind ungültige Dienstnamenzeichen.
-
Displayname
-
Diese Spalte ist die lokalisierbare Zeichenfolge, mit der Benutzeroberflächenprogramme den Dienst identifizieren. Die Zeichenfolge hat eine maximale Länge von 256 Zeichen. Der Dienststeuerungs-Manager behält die Groß-/Kleinschreibung des Anzeigenamens bei, bei Anzeigenamenvergleichen wird die Groß-/Kleinschreibung jedoch nicht beachtet.
-
Servicetype
-
Bei dieser Spalte handelt es sich um einen Satz von Bitflags, die den Typ des Diensts angeben. Einer der folgenden Diensttypen muss in dieser Spalte angegeben werden.
Diensttyp Wert BESCHREIBUNG _WIN32-EIGENER _ PROZESS DES _ DIENSTS 0x00000010 Ein Microsoft Win32-Dienst, der einen eigenen Prozess ausgeführt. _WIN32-FREIGABEPROZESS _ _ FÜR DEN DIENST 0x00000020 Ein Win32-Dienst, der einen Prozess teilt. INTERAKTIVER _ _ DIENSTPROZESS 0x00000100 Ein Win32-Dienst, der mit dem Desktop interagiert. Dieser Wert kann nicht allein verwendet werden und muss einem der beiden vorherigen Typen hinzugefügt werden. Die Spalte StartName muss bei Verwendung dieses Flags auf LocalSystem oder NULL festgelegt werden. Die folgenden Diensttypen werden nicht unterstützt.
Diensttyp Wert BESCHREIBUNG _ _ DIENSTKERNELTREIBER 0x00000001 Ein Treiberdienst. _ _ _ DIENSTDATEISYSTEMTREIBER 0x00000002 Ein Dateisystemtreiberdienst. -
StartType
-
Diese Spalte ist ein Satz von Bitflags, die angeben, wann der Dienst gestartet werden soll. Einer der folgenden Typen von Dienststart muss in dieser Spalte angegeben werden.
Typ des Dienststarts Wert BESCHREIBUNG SERVICE _ AUTO _ START 0x00000002 Ein Dienst wird während des Systemstarts gestartet. SERVICE _ DEMAND _ START 0x00000003 Ein Dienst wird gestartet, wenn der Dienststeuerungs-Manager die StartService-Funktion aufruft. DIENST _ DEAKTIVIERT 0x00000004 Gibt einen Dienst an, der nicht mehr gestartet werden kann. Der Windows Installer kann die Optionen SERVICE BOOT START und SERVICE SYSTEM START nicht _ _ _ _ verwenden.
-
ErrorControl
-
Diese Spalte gibt die Aktion an, die vom Startprogramm ausgeführt wird, wenn der Dienst während des Starts nicht gestartet werden kann. Diese Werte wirken sich auf die ServiceControl StartService-Ereignisse für installierte Dienste aus. Eines der folgenden Fehlersteuerungsflags muss in dieser Spalte angegeben werden.
Durch Hinzufügen der Konstanten msidbServiceInstallErrorControlVital (value = 0x08000) zu den Flags in der folgenden Tabelle wird angegeben, dass bei der gesamten Installation ein Fehler aufgetreten sein sollte, wenn der Dienst nicht im System installiert werden kann.
Fehlersteuerungsflag Wert Aktion des Startprogramms DIENSTFEHLER _ _ IGNORIEREN 0x00000000 Protokolliert den Fehler und setzt den Startvorgang fort. DIENSTFEHLER _ _ NORMAL 0x00000001 Protokolliert den Fehler, zeigt ein Meldungsfeld an und setzt den Startvorgang fort. DIENSTFEHLER _ _ KRITISCH 0x00000003 Protokolliert den Fehler, wenn dies möglich ist und das System mit der letzten als gut bekannten Konfiguration neu gestartet wird. Wenn die letzte als funktionierend bekannte Konfiguration gestartet wird, schlägt der Startvorgang fehl. -
LoadOrderGroup
-
Diese Spalte enthält die Zeichenfolge, die die Lastreihenfolgegruppe benennt, der dieser Dienst angehört. Geben Sie NULL oder eine leere Zeichenfolge an, wenn der Dienst nicht zu einer Gruppe gehört.
-
Abhängigkeiten
-
Diese Spalte enthält eine Liste der Namen von Diensten oder Auslastungsreihenfolgegruppen, die das System vor diesem Dienst starten muss. Trennen Sie Namen in der Liste durch NULL-Werte. Wenn der Dienst über keine Abhängigkeiten verfügt, geben Sie NULL oder eine leere Zeichenfolge an. Verwenden Sie die [ ~ ] -Syntax, um einen NULL-Wert einzufügen. Abhängigkeit von einer Gruppe bedeutet, dass dieser Dienst ausgeführt werden kann, wenn mindestens ein Mitglied der Gruppe ausgeführt wird, nachdem versucht wurde, alle Mitglieder der Gruppe zu starten.
Um beispielsweise zu verlangen, dass das System service1 und service2 startet, geben Sie service1 service2 in die Spalte Abhängigkeiten ein, bevor der in der Spalte ServiceInstall aufgeführte Dienst gestartet [ ~ ] [ ~ ] [ ~ ] wird. Die Bezeichner service1 und service2 müssen entweder im Primärschlüssel der Tabelle enthalten sein oder der Name des diensts sein, der bereits installiert ist.
Sie müssen Gruppennamen das Präfix + vorangestellt haben, damit sie von einem Dienstnamen unterschieden werden können. Um zu verlangen, dass das System service1 und mindestens ein Mitglied der Bestellgruppe MyGroup startet, bevor der in der Spalte ServiceInstall aufgeführte Dienst gestartet wird, geben Sie service1 [ ~ ] + MyGroup [ ~ ] [ ~ ] ein.
-
StartName
-
Der Dienst wird als name angemeldet, der von der Zeichenfolge in dieser Spalte angegeben wird. Wenn der Diensttyp SERVICE WIN32 OWN PROCESS lautet, _ verwenden Sie einen _ _ Kontonamen im Format DomainName \ UserName. Wenn das Konto zur integrierten Domäne gehört, ist es zulässig, anzugeben. \ Nutzername. Das LocalSystem-Konto muss verwendet werden, wenn der Diensttyp SERVICE _ WIN32 _ SHARE PROCESS oder SERVICE INTERACTIVE PROCESS _ _ _ lautet. Die CreateService-Funktion verwendet das LocalSystem-Konto, wenn StartName als NULL angegeben ist und die meisten Dienste diese Spalte daher leer lassen.
-
Passwort
-
Diese Zeichenfolge ist das Kennwort für den Kontonamen, der in der Spalte StartName angegeben ist. Beachten Sie, dass der Benutzer über Berechtigungen zum Anmelden als Dienst verfügen muss. Der Dienst hat kein Kennwort, wenn StartName NULL oder eine leere Zeichenfolge ist. Der Startname von LocalSystem ist NULL, und daher ist das Kennwort in dieser Instanz NULL, sodass die meisten Dienste diese Spalte leer lassen.
Beachten Sie, dass das Installationsprogramm nach dem Löschen eines Diensts, der mit einem Benutzernamen und einem Kennwort installiert wurde, keinen Rollback des Diensts durchführen kann, ohne zuerst eine benutzerdefinierte Aktion zum Abrufen des Kennworts zu verwenden. Das Installationsprogramm kann alle erforderlichen Informationen zum Dienst abrufen, mit Ausnahme des Kennworts, das in einem geschützten Teil des Systems gespeichert ist. Die benutzerdefinierte Aktion erhält das Kennwort, indem der Benutzer dazu aufgefordert wird, eine Eigenschaft aus der Datenbank zu lesen oder eine Datei zu lesen. Die benutzerdefinierte Aktion muss dann ChangeServiceConfigaufrufen, um das Kennwort anzugeben, bevor der Dienst neu installiert wird.
Windows Das Installationsprogramm schreibt den in das Feld Kennwort eingegebenen Wert nicht in die Protokolldatei.
-
Argumente
-
Diese Spalte enthält alle Befehlszeilenargumente oder -eigenschaften, die zum Ausführen des Diensts erforderlich sind.
-
Komponente_
-
Externer Schlüssel zur Spalte einer der Komponententabellen. Beachten Sie, dass keyPath für diese Komponente die ausführbare Datei für den Dienst sein muss, um diesen Dienst mithilfe der Tabelle InstallService zu installieren.
-
Beschreibung
-
Diese Spalte enthält eine lokalisierbare Beschreibung für den dienst, der konfiguriert wird. Wenn diese Spalte leer gelassen wird, verwendet das Installationsprogramm die vorhandene Beschreibung des Diensts, sofern vorhanden. Weitere Informationen finden Sie unter SERVICE _ DESCRIPTION im Microsoft Windows Software Development Kit (SDK). Geben Sie " " in diese Spalte ein, um eine vorhandene Beschreibung zu [ ~ ] löschen. Dies führt zu einer leeren Beschreibung für einen neuen oder vorhandenen Dienst.
Bemerkungen
Die InstallServices-Aktion in Sequenztabellen verarbeitet die Informationen in dieser Tabelle. Informationen zur Verwendung von Sequenztabellen finden Sie unter Verwenden einer Sequenztabelle.
Diese Tabelle enthält die meisten Parameter für die Win32 CreateService-Funktion.
Obwohl es möglich ist, die Benutzeroberfläche zu verwenden, um anzugeben, dass ein Dienst als "Aus Quelle ausführen" installiert werden soll, unterstützt das Installationsprogramm diese Art der Installation nicht tatsächlich. Dienste, die mit der Berechtigungsstufe des lokalen Systems ausgeführt werden, müssen installiert werden, um von der lokalen Festplatte aus ausgeführt zu werden. Vermeiden Sie die Installation von Diensten, die die Identität der Berechtigungen eines bestimmten Benutzers annehmen, da dies Sicherheitsdaten in ein Protokoll oder die Systemregistrierung schreiben kann. Dies kann möglicherweise zu einem Sicherheitsproblem, einem Kennwortkonflikt oder dem Verlust von Konfigurationsdaten führen, wenn das System neu gestartet wird.
Um einen Dienst während einer Deinstallation zu löschen, muss ein entsprechender Datensatz für den Dienst in der ServiceControl-Tabelle vorhanden sein, und das msidbServiceControlEventUninstallDelete-Flag muss in der Spalte Ereignis angezeigt werden. Das Installationsprogramm löscht einen Dienst in der ServiceInstall-Tabelle während der Deinstallation nicht ohne diesen Eintrag in der ServiceControl-Tabelle.
Informationen zum Sichern eines Diensts finden Sie in der MsiLockPermissionsEx-Tabelle.