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


Создание метода класса Win32_Service (поставщики WMI CIMWin32)

Метод Класса CreateWMI создает новую системную службу.

В этом разделе используется синтаксис MOF. Дополнительные сведения об использовании этого метода см. в разделе Вызов метода .

Синтаксис

uint32 Create(
  [in] string  Name,
  [in] string  DisplayName,
  [in] string  PathName,
  [in] uint8   ServiceType,
  [in] uint8   ErrorControl,
  [in] string  StartMode,
  [in] boolean DesktopInteract,
  [in] string  StartName,
  [in] string  StartPassword,
  [in] string  LoadOrderGroup,
  [in] string  LoadOrderGroupDependencies[],
  [in] string  ServiceDependencies[]
);

Параметры

Имя [in]

Имя службы, устанавливаемой в метод Create . Максимальная длина строки — 256 символов. В базе данных Service Control Manager сохраняется регистр символов, но при сравнении имен служб регистр всегда не учитывается. Косая черта (/) и двойная обратная косая черта (\) являются недопустимыми символами имени службы.

DisplayName [in]

Отображаемое имя службы. Максимальная длина этой строки равна 256 символам. Имя сохраняется в диспетчере управления службами. Сравнения DisplayName всегда не учитывают регистр.

Ограничения: принимает то же значение, что и параметр Name .

Пример: "Atdisk".

PathName [in]

Полный путь к исполняемому файлу, который реализует службу.

Пример: "\SystemRoot\System32\drivers\afd.sys".

ServiceType [in]

Типы служб, предоставляемых процессам, которые их вызывают.

1 (0x1)

Драйвер ядра

2 (0x2)

Драйвер файловой системы

4 (0x4)

Адаптер

8 (0x8)

Драйвер распознавателя

16 (0x10)

Собственный процесс

32 (0x20)

Процесс предоставления общего доступа

256 (0x100)

Интерактивный процесс

ErrorControl [in]

Серьезность ошибки, если не удается запустить метод Create . Значение указывает действие, выполняемое программой запуска в случае сбоя. Все ошибки регистрируются системой.

0

Пользователь не получает уведомление.

1

Пользователь получает уведомление.

2

Система перезапускается в последней известной рабочей конфигурации.

3

Система пытается начать с хорошей конфигурации.

StartMode [in]

Режим запуска базовой службы Windows.

Загрузка

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

Система

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

Автоматически

Служба, автоматически запускаемая диспетчером управления службами во время запуска системы.

Вручную

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

Выключено

Служба, которая больше не может быть запущена.

DesktopInteract [in]

Если значение равно true, служба может создавать окна на рабочем столе или взаимодействовать с ними.

StartName [in]

Имя учетной записи, под которой выполняется служба. В зависимости от типа службы имя учетной записи может быть в формате Имя_домена\Имя_пользователя или Имя участника-пользователя (UPN) (Username@DomainName). При выполнении процесс службы регистрируется с помощью одной из этих двух форм. Если учетная запись принадлежит встроенному домену, можно указать .\Username. Если задано значение NULL , служба входит в систему под учетной записью LocalSystem. Для драйверов ядра или системного уровня StartName содержит имя объекта драйвера (т. е. \FileSystem\Rdr или \Driver\Xns), которое система ввода-вывода использует для загрузки драйвера устройства. Если задано значение NULL , драйвер выполняется с именем объекта по умолчанию, созданным системой ввода-вывода на основе имени службы. Пример: DWDOM\Администратор.

StartPassword [in]

Пароль для имени учетной записи, указанной параметром StartName . Если вы не изменяете пароль, укажите ЗНАЧЕНИЕ NULL . Если служба не имеет пароля, указывается пустая строка.

LoadOrderGroup [in]

Имя группы, связанной с новой службой. Группы порядка загрузки содержатся в реестре и определяют последовательность загрузки служб в операционную систему. Если указатель имеет значение NULL или указывает на пустую строку, служба не принадлежит к группе. Зависимости между группами должны быть перечислены в параметре LoadOrderGroupDependencies . Сначала запускаются службы в списке групп упорядочения нагрузки, а затем службы в группах, которых нет в списке групп упорядочения нагрузки, а затем службы, не принадлежащие группе. Реестр содержит список групп упорядочения загрузки, расположенных по адресу:

HKEY_LOCAL_MACHINE\Системы\CurrentControlSet\Управления\ServiceGroupOrder

LoadOrderGroupDependencies [in]

Массив групп упорядочения нагрузки, которые должны запускаться перед этой службой. Каждый элемент в массиве разделен значением NULL , а список завершается двумя значениями NULL . В Visual Basic или скрипте можно передать vbArray. Если указатель имеет значение NULL или указывает на пустую строку, служба не имеет зависимостей. Имена групп должны быть префиксированы символом SC_GROUP_IDENTIFIER (определенным в файле Winsvc.h), чтобы отличить их от имени службы, так как службы и группы служб используют одно и то же пространство имен. Зависимость от группы означает, что эта служба может запускаться, если хотя бы один член группы запущен после попытки запустить всех членов группы.

ServiceDependencies [in]

Массив, содержащий имена служб, которые должны запускаться перед запуском этой службы. Каждый элемент в массиве разделен значением NULL , а список завершается двумя значениями NULL . В Visual Basic или скрипте можно передать vbArray. Если указатель имеет значение NULL или указывает на пустую строку, служба не имеет зависимостей. Зависимость от службы означает, что эта служба может выполняться только в том случае, если запущена служба, от которую она зависит.

Возвращаемое значение

Возвращает одно из значений, перечисленных в следующем списке, или любое другое значение, указывающее на ошибку. Дополнительные коды ошибок см. в разделе WMI Error Constants или WbemErrorEnum. Общие значения HRESULT см. в разделе Системные коды ошибок.

0

Запрос принят.

1

Запрос не поддерживается.

2

У пользователя не было необходимого доступа.

3

Службу нельзя остановить, так как от нее зависят другие работающие службы.

4

Запрошенный управляющий код недопустим или неприемлем для данной службы.

5

Запрошенный управляющий код не может быть отправлен службе, так как состояние службы (свойство State класса Win32_BaseService ) равно 0, 1 или 2.

6

Служба не запущена.

7

Служба не ответила на запрос запуска за отведенное время.

8

Неизвестный сбой при запуске службы.

9

Путь каталога к исполняемому файлу службы не найден.

10

Служба уже запущена.

11

База данных для добавления новой службы заблокирована.

12

Зависимость, на основе которого зависит эта служба, была удалена из системы.

13

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

14

Эта служба была отключена в системе.

15

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

16

Эта служба удаляется из системы.

17

Служба не имеет потока выполнения.

18

Служба имеет циклические зависимости при запуске.

19

Служба выполняется с тем же именем.

20

Имя службы содержит недопустимые символы.

21

Службе переданы недопустимые параметры.

22

Учетная запись, под которой выполняется эта служба, является недопустимой или не имеет разрешений для запуска службы.

23

Служба существует в базе данных доступных в системе служб.

24

Служба в данный момент приостановлена в системе.

Комментарии

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

Несмотря на имя, метод Create фактически не создает службу; он просто устанавливает существующую службу. Чтобы использовать эту команду, необходимо скопировать исполняемый файл службы на компьютер, а затем с помощью команды Создать установить службу.

Метод Create аналогичен методу Change . В обоих случаях свойства службы передаются в качестве параметров в метод . Как и в случае с параметрами, используемыми с методом Change , очень важен порядок, в котором передаются эти параметры.

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

Примеры

Следующий VBScript устанавливает службу с именем DbService.

Const OWN_PROCESS = 16
Const NOT_INTERACTIVE = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objService = objWMIService.Get("Win32_BaseService")
errReturn = objService.Create ("DbService", "Personnel Database", _
"c:\windows\system32\db.exe", OWN_PROCESS ,2 ,"Automatic" , _
 NOT_INTERACTIVE ,".\LocalSystem" ,"")

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Пространство имен
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

См. также раздел

Классы операционной системы

Win32_Service

Задачи WMI: службы