Поделиться через


Таблица ServiceInstall

Таблица ServiceInstall используется для установки службы и содержит следующие столбцы.

Столбец Тип Ключ Допустимое значение NULL
ServiceInstall идентификатора Y N
Имя Форматированные N N
DisplayName Форматированные N Y
ServiceType DoubleInteger N N
StartType DoubleInteger N N
ErrorControl DoubleInteger N N
LoadOrderGroup Форматированные N Y
Зависимости Форматированные N Y
StartName Форматированные N Y
Пароль Форматированные N Y
Аргументы Форматированные N Y
Компонент_ идентификатора N N
Описание Форматированные N Y

 

Столбцы

ServiceInstall

Это первичный ключ для таблицы.

имя

Этот столбец представляет собой строку, которая предоставляет имя службы для установки. Строка имеет максимальную длину 256 символов. База данных диспетчера управления службами сохраняет регистр символов в имени службы, но сравнение имен служб не учитывает регистр. Косая черта (/) и косая черта (\) являются недопустимыми символами имени службы.

DisplayName

Этот столбец — это локализуемая строка, используемая программами пользовательского интерфейса для идентификации службы. Строка имеет максимальную длину 256 символов. Диспетчер управления службами сохраняет регистр отображаемого имени, но сравнение отображаемых имен не учитывает регистр.

ServiceType

Этот столбец представляет собой набор битовых флагов, указывающих тип службы. В этом столбце должен быть указан один из следующих типов служб.

Тип службы Ценность Описание
SERVICE_WIN32_OWN_PROCESS 0x00000010 Служба Microsoft Win32, которая выполняет собственный процесс.
SERVICE_WIN32_SHARE_PROCESS 0x00000020 Служба Win32, которая предоставляет общий доступ к процессу.
SERVICE_INTERACTIVE_PROCESS 0x00000100 Служба Win32, взаимодействующая с рабочим столом. Это значение нельзя использовать отдельно и должно быть добавлено в один из двух предыдущих типов. Столбец StartName должен иметь значение LocalSystem или null при использовании этого флага.

 

Следующие типы служб не поддерживаются.

Тип службы Ценность Описание
SERVICE_KERNEL_DRIVER 0x00000001 Служба драйверов.
SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Служба драйвера файловой системы.

 

StartType

Этот столбец представляет собой набор битовых флагов, определяющих время запуска службы. В этом столбце должен быть указан один из следующих типов запуска службы.

Тип запуска службы Ценность Описание
SERVICE_AUTO_START 0x00000002 Служба начинается во время запуска системы.
SERVICE_DEMAND_START 0x00000003 Служба начинается, когда диспетчер управления службами вызывает функцию StartService.
SERVICE_DISABLED 0x00000004 Указывает службу, которая больше не может быть запущена.

 

Установщик Windows не может использовать параметры SERVICE_BOOT_START и SERVICE_SYSTEM_START.

ErrorControl

Этот столбец указывает действие, выполняемое программой запуска, если служба не сможет запуститься во время запуска. Эти значения влияют на события ServiceControl StartService для установленных служб. Один из следующих флагов управления ошибками должен быть указан в этом столбце.

Добавление константы msidbServiceInstallErrorControlVital (значение = 0x08000) в флаги в следующей таблице указывает, что общая установка должна завершиться ошибкой, если служба не может быть установлена в системе.

Флаг элемента управления ошибками Ценность Действие программы запуска
SERVICE_ERROR_IGNORE 0x00000000 Регистрирует ошибку и продолжается с операцией запуска.
SERVICE_ERROR_NORMAL 0x00000001 Регистрирует ошибку, отображает окно сообщения и продолжает операцию запуска.
SERVICE_ERROR_CRITICAL 0x00000003 Регистрирует ошибку, если это возможно, и система перезапускается с последней конфигурацией, известной как хорошая. Если запускается последняя известная хорошая конфигурация, операция запуска завершается ошибкой.

 

LoadOrderGroup

Этот столбец содержит строку, которая называет группу упорядочения нагрузки, в которой эта служба является членом. Укажите значение NULL или пустую строку, если служба не принадлежит группе.

зависимости

Этот столбец представляет собой список имен служб или групп упорядочивания нагрузки, которые система должна запускать перед этой службой. Разделяйте имена в списке по значениям NULL. Если у службы нет зависимостей, укажите null или пустую строку. Используйте синтаксис [~], чтобы вставить значение NULL. Зависимость от группы означает, что эта служба может выполняться, если после попытки запустить все члены группы по крайней мере один член группы.

Например, чтобы требовать, чтобы служба запуска системы 1 и service2 перед запуском службы, указанной в столбце ServiceInstall, введите service1[~]service2[~][~] в столбец зависимостей. Идентификаторы service1 и service2 должны находиться в первичном ключе таблицы или быть именем уже установленной службы.

Необходимо использовать имена групп префикса со значением +, чтобы их можно было отличить от имени службы. Чтобы требовать, чтобы система запуска службы1 и по крайней мере один член группы заказов MyGroup перед запуском службы, указанной в столбце ServiceInstall, введите service1[~]+MyGroup[~][~]].

StartName

Служба регистрируется в качестве имени, заданного строкой в этом столбце. Если тип службы SERVICE_WIN32_OWN_PROCESS использовать имя учетной записи в форме: DomainName\UserName. Если учетная запись принадлежит встроенному домену, можно указать .\UserName. Учетная запись LocalSystem должна использоваться, если тип службы SERVICE_WIN32_SHARE_PROCESS или SERVICE_INTERACTIVE_PROCESS. Функция CreateService использует учетную запись LocalSystem, если Имя startName указано как null, и большинство служб поэтому оставляют этот столбец пустым.

пароль

Эта строка является паролем имени учетной записи, указанной в столбце StartName. Обратите внимание, что у пользователя должны быть разрешения на вход в качестве службы. Служба не имеет пароля, если StartName имеет значение NULL или пустая строка. Начальная имя LocalSystem имеет значение NULL, поэтому пароль в этом экземпляре имеет значение NULL, поэтому большинство служб оставляют этот столбец пустым.

Обратите внимание, что после удаления службы, которая была установлена с именем пользователя и паролем, установщик не может откатить службу без первого использования пользовательского действия для получения пароля. Установщик может получить все необходимые сведения о службе, кроме пароля, который хранится в защищенной части системы. Пользовательское действие получает пароль, запрашивая пользователя, считывая свойство из базы данных или считывая файл. Затем настраиваемое действие должно вызвать ChangeServiceConfig, чтобы указать пароль, прежде чем переустановить службу.

Установщик Windows не записывает значение, введенное в поле "Пароль" в файл журнала.

Аргументы

Этот столбец содержит все аргументы командной строки или свойства, необходимые для запуска службы.

Component_

Внешний ключ к столбцу одной из таблицы компонентов. Обратите внимание, что для установки этой службы с помощью таблицы InstallService ключPath для этого компонента должен быть исполняемым файлом для службы.

описание

Этот столбец содержит локализованное описание настроенной службы. Если этот столбец остается пустым, установщик использует существующее описание службы, если она существует. Дополнительные сведения см. в разделе SERVICE_DESCRIPTION в пакете средств разработки программного обеспечения Microsoft Windows (SDK). Чтобы удалить существующее описание, введите "[~]" в этом столбце. Это приводит к пустому описанию для новой или существующей службы.

Замечания

Действие InstallServices в таблицах последовательности обрабатывает сведения в этой таблице. Сведения об использовании таблиц последовательности см. в с помощью таблицы последовательности.

Эта таблица имеет большую часть параметров функции Win32 CreateService.

Хотя можно использовать пользовательский интерфейс, чтобы указать, что служба устанавливается в качестве запуска из источника, установщик фактически не поддерживает этот тип установки. Службы, которые выполняются с уровнем привилегий локальной системы, должны быть установлены для запуска с локального жесткого диска. Избегайте установки служб, которые олицетворяют привилегии определенного пользователя, так как это может записывать данные безопасности в журнал или системный реестр. Это может создать проблему безопасности, конфликт паролей или потерю данных конфигурации при перезапуске системы.

Чтобы удалить службу во время удаления, должна быть соответствующая запись для службы в таблице ServiceControl, а флаг msidbServiceControlEventUninstallDelete должен отображаться в столбце событий. Установщик не удаляет службу в таблице ServiceInstall во время удаления без этой записи в таблице ServiceControl.

Сведения о том, как защитить службу, см. в таблице MsiLockPermissionsEx.

Ратификация

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69