Tabelle „ServiceInstall“

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 Formatted N N
DisplayName Formatted (Formatiert) N J
ServiceType DoubleInteger N N
StartType DoubleInteger N N
ErrorControl DoubleInteger N N
LoadOrderGroup Formatted (Formatiert) N J
Abhängigkeiten Formatted (Formatiert) N J
StartName Formatted (Formatiert) N J
Kennwort Formatted (Formatiert) N J
Argumente Formatted N J
Component_ Identifier N N
BESCHREIBUNG Formatted (Formatiert) N J

 

Spalten

ServiceInstall

Dies ist der Primärschlüssel für die Tabelle.

Name

Diese Spalte ist die Zeichenfolge, die den zu installierenden Dienstnamen angibt. Die maximale Länge der Zeichenfolge beträgt 256 Zeichen. Die Datenbank des Dienststeuerungs-Managers behält die Groß-/Kleinschreibung der Zeichen im Dienstnamen bei, aber bei Vergleichen von Dienstnamen wird die Groß-/Kleinschreibung nicht beachtet. Schrägstrich (/) und umgekehrter Schrägstrich (\) sind ungültige Dienstnamenzeichen.

DisplayName

Diese Spalte ist die lokalisierbare Zeichenfolge, mit der Benutzeroberflächenprogramme den Dienst identifizieren. Die maximale Länge der Zeichenfolge beträgt 256 Zeichen. Der Dienststeuerungs-Manager behält die Groß-/Kleinschreibung des Anzeigenamens bei, aber bei Vergleichen von Anzeigenamen wird die Groß-/Kleinschreibung nicht beachtet.

ServiceType

Diese Spalte ist eine Gruppe von Bitflags, die den Typ des Diensts angeben. In dieser Spalte muss einer der folgenden Diensttypen angegeben werden.

Diensttyp Wert BESCHREIBUNG
SERVICE_WIN32_OWN_PROCESS 0x00000010 Ein Microsoft Win32-Dienst, der seinen eigenen Prozess ausführt.
SERVICE_WIN32_SHARE_PROCESS 0x00000020 Ein Win32-Dienst, der einen Prozess freigibt.
SERVICE_INTERACTIVE_PROCESS 0x00000100 Ein Win32-Dienst, der mit dem Desktop interagiert. Dieser Wert kann nicht allein verwendet werden und muss einem der beiden vorhergehenden 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
SERVICE_KERNEL_DRIVER 0x00000001 Ein Treiberdienst.
SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Ein Treiberdienst für das Dateisystem.

 

StartType

Diese Spalte ist eine Gruppe von Bitflags, die angeben, wann der Dienst gestartet werden soll. In dieser Spalte muss einer der folgenden Typen von Dienststarts angegeben werden.

Typ des Dienststarts Wert BESCHREIBUNG
SERVICE_AUTO_START 0x00000002 Ein Dienststart während des Systemstarts.
SERVICE_DEMAND_START 0x00000003 Ein Dienst wird gestartet, wenn der Dienststeuerungs-Manager die Funktion StartService aufruft.
SERVICE_DISABLED 0x00000004 Gibt einen Dienst an, der nicht mehr gestartet werden kann.

 

Windows Installer kann die Optionen „SERVICE_BOOT_START“ und „SERVICE_SYSTEM_START“ nicht verwenden.

ErrorControl

In dieser Spalte wird die Aktion angegeben, 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. In dieser Spalte muss eines der folgenden Fehlersteuerungsflags angegeben werden.

Durch das Hinzufügen der Konstanten msidbServiceInstallErrorControlVital (Wert = 0x08000) zu den Flags in der folgenden Tabelle wird angegeben, dass die Gesamtinstallation fehlschlagen sollte, wenn der Dienst im System nicht installiert werden kann.

Fehlersteuerungsflag Wert Aktion des Startprogramms
SERVICE_ERROR_IGNORE 0x00000000 Protokolliert den Fehler und setzt den Startvorgang fort.
SERVICE_ERROR_NORMAL 0x00000001 Protokolliert den Fehler, zeigt ein Meldungsfeld an und setzt den Startvorgang fort.
SERVICE_ERROR_CRITICAL 0x00000003 Protokolliert den Fehler, wenn dies möglich ist, und das System wird mit der letzten bekanntermaßen guten Konfiguration neu gestartet. Wenn diese Konfiguration gestartet wird, schlägt der Startvorgang fehl.

 

LoadOrderGroup

Diese Spalte enthält die Zeichenfolge, die die Ladereihenfolge für die Gruppe nennt, deren Mitglied dieser Dienst ist. Geben Sie „NULL“ oder eine leere Zeichenfolge an, wenn der Dienst nicht zu einer Gruppe gehört.

Dependencies (Abhängigkeiten)

Diese Spalte ist eine Liste der Namen von Diensten oder Ladereihenfolgegruppen, die das System vor diesem Dienst starten muss. Trennen Sie Namen in der Liste durch Nullen. Wenn es beim Dienst keine Abhängigkeiten gibt, geben Sie „NULL“ oder eine leere Zeichenfolge an. Verwenden Sie die Syntax „[~]“ zum Einfügen einer Null. „Abhängigkeit von einer Gruppe“ bedeutet, dass dieser Dienst ausgeführt werden kann, wenn nach einem Versuch, alle Mitglieder der Gruppe zu starten, mindestens ein Mitglied der Gruppe ausgeführt wird.

Um beispielsweise zu fordern, dass das System „service1“ und „service2“ startet, geben Sie vor dem Starten des in der Spalte „ServiceInstall“ aufgeführten Diensts „service1[~]service2[~][~]“ in die Spalte „Dependencies“ ein. Die Bezeichner „service1“ und „service2“ müssen entweder im Primärschlüssel der Tabelle enthalten oder der Name des bereits installierten Diensts sein.

Sie müssen Gruppennamen ein „+“ voranstellen, damit sie von einem Dienstnamen unterschieden werden können. Geben Sie „service1[~]+MyGroup[~][~]“ ein, damit das System „service1“ und mindestens ein Mitglied der Reihenfolgengruppe „MyGroup“ startet, bevor der in der Spalte „ServiceInstall“ aufgeführte Dienst gestartet wird.

StartName

Der Dienst wird als der Name angemeldet, der durch die Zeichenfolge in dieser Spalte angegeben wird. Wenn der Diensttyp „SERVICE_WIN32_OWN_PROCESS“ ist, verwenden Sie einen Kontonamen in der Form: „Domänenname\Benutzername“. Wenn das Konto zur integrierten Domäne gehört, darf „.\Benutzername“ angegeben werden. Das Konto „LocalSystem“ muss verwendet werden, wenn der Diensttyp „SERVICE_WIN32_SHARE_PROCESS“ oder „SERVICE_INTERACTIVE_PROCESS“ ist. Die Funktion CreateService verwendet das Konto „LocalSystem“, wenn „StartName“ als „NULL“ angegeben wird und deshalb die meisten Dienste diese Spalte leer lassen.

Password (Kennwort)

Diese Zeichenfolge ist das Kennwort für den Kontonamen, der in der Spalte „StartName“ angegeben wurde. Beachten Sie, dass der Benutzer Berechtigungen für die Anmeldung als Dienst haben muss. Der Dienst hat kein Kennwort, wenn „StartName“ gleich „NULL“ oder eine leere Zeichenfolge ist. Weil der Startname von „LocalSystem“ gleich „NULL“ ist, ist das Kennwort in dieser Instanz ebenfalls gleich „NULL“, sodass die meisten Dienste diese Spalte leer lassen.

Beachten Sie Folgendes: Das Installationsprogramm kann nach dem Löschen eines Diensts, der mit einem Benutzernamen und Kennwort installiert wurde, ein Rollback für den Dienst erst ausführen, nachdem es das Kennwort mithilfe einer benutzerdefinierten Aktion abgerufen hat. 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 ruft das Kennwort ab, indem sie den Benutzer auffordert, eine Eigenschaft aus der Datenbank oder eine Datei zu lesen. Anschließend muss die benutzerdefinierte Aktion ChangeServiceConfig aufrufen, um das Kennwort anzugeben, bevor der Dienst neu installiert wird.

Windows Installer schreibt den in das Feld „Kennwort“ eingegebenen Wert nicht in die Protokolldatei.

Arguments (Argumente)

Diese Spalte enthält alle Befehlszeilenargumente oder -eigenschaften, die zum Ausführen des Diensts erforderlich sind.

Component_

Externer Schlüssel für Spalte 1 der Komponententabelle. Beachten Sie, dass zum Installieren dieses Diensts mithilfe der Tabelle „InstallService“ der KeyPath für diese Komponente die ausführbare Datei für den Dienst sein muss.

Description (Beschreibung)

Diese Spalte enthält eine lokalisierbare Beschreibung für den Dienst, der gerade konfiguriert wird. Wenn diese Spalte leer bleibt, verwendet das Installationsprogramm die (möglicherweise) vorhandene Beschreibung des Diensts. Weitere Informationen finden Sie im Microsoft Windows Software Development Kit (SDK) unter „SERVICE_DESCRIPTION“. Geben Sie zum Löschen einer vorhandenen Beschreibung in dieser Spalte „[~]“ ein. Dies führt zu einer leeren Beschreibung für einen neuen oder vorhandenen Dienst.

Bemerkungen

Die Aktion InstallServices 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-Funktion CreateService.

Obwohl es möglich ist, über die Benutzeroberfläche anzugeben, dass ein Dienst als „Run-from-Source“ (von der Quelle ausgeführt) installiert werden soll, unterstützt das Installationsprogramm diese Installationsart tatsächlich nicht. Dienste, die mit der Berechtigungsstufe des lokalen Systems ausgeführt werden, müssen so installiert werden, dass sie von der lokalen Festplatte ausgeführt werden können. Vermeiden Sie die Installation von Diensten, die einen Identitätswechsel bei den Berechtigungen eines bestimmten Benutzers durchführen, weil dadurch Sicherheitsdaten in ein Protokoll oder die Systemregistrierung geschrieben werden könnten. Dies kann beim Neustart des Systems möglicherweise zu einem Sicherheitsproblem, einem Kennwortkonflikt oder zum Verlust von Konfigurationsdaten führen.

Zum Löschen eines Diensts während einer Deinstallation muss die Tabelle „ServiceControl“ einen entsprechenden Datensatz für den Dienst enthalten, und in der Spalte „Ereignis“ muss das Flag msidbServiceControlEventUninstallDelete angezeigt werden. Ohne diesen Eintrag in der Tabelle „ServiceControl“ löscht das Installationsprogramm einen Dienst in der Tabelle „ServiceInstall“ während der Deinstallation nicht.

Informationen zum Schützen eines Diensts finden Sie in der Tabelle „MsiLockPermissionsEx“.

Überprüfen

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69