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


Класс Win32_Service

Класс WMIWin32_Service представляет службу в компьютерной системе под управлением Windows.

Следующий пример синтаксиса — упрощенный MOF-код, который включает все наследуемые свойства. Свойства и методы находятся в алфавитном порядке, а не в порядке MOF.

Синтаксис

[Dynamic, Provider("CIMWin32"), SupportsUpdate, UUID("{8502C4D9-5FBB-11D2-AAC1-006008C78BC7}"), DisplayName("Services"), AMENDMENT]
class Win32_Service : Win32_BaseService
{
  boolean  AcceptPause;
  boolean  AcceptStop;
  string   Caption;
  uint32   CheckPoint;
  string   CreationClassName;
  boolean  DelayedAutoStart;
  string   Description;
  boolean  DesktopInteract;
  string   DisplayName;
  string   ErrorControl;
  uint32   ExitCode;
  datetime InstallDate;
  string   Name;
  string   PathName;
  uint32   ProcessId;
  uint32   ServiceSpecificExitCode;
  string   ServiceType;
  boolean  Started;
  string   StartMode;
  string   StartName;
  string   State;
  string   Status;
  string   SystemCreationClassName;
  string   SystemName;
  uint32   TagId;
  uint32   WaitHint;
};

Члены

Класс Win32_Service имеет следующие типы членов:

Методы

Класс Win32_Service содержит следующие методы.

Метод Описание
Изменить Изменяет службу.
ChangeStartMode Изменяет режим запуска службы.
Создать Создает новую службу.
Удалить Удаляет существующую службу.
GetSecurityDescriptor Возвращает дескриптор безопасности, управляющий доступом к службе.
Запрос службы Запрашивает, чтобы служба обновила свое состояние до диспетчера служб.
PauseService Пытается поместить службу в приостановленное состояние.
ResumeService Пытается поместить службу в возобновленное состояние.
SetSecurityDescriptor Записывает обновленную версию дескриптора безопасности, управляющего доступом к службе.
StartService Пытается поместить службу в состояние запуска.
StopService Помещает службу в остановленное состояние.
UserControlService Пытается отправить определяемый пользователем управляющий код в службу.

 

Свойства

Класс Win32_Service имеет следующие свойства.

AcceptPause

Тип данных: boolean

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS|dwControlsAccepted| SERVICE_ACCEPT_PAUSE_CONTINUE"), DisplayName ("Служба принимает паузу")

Указывает, можно ли приостановить службу.

Это свойство наследуется от Win32_BaseService.

AcceptStop

Тип данных: boolean

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS|dwControlsAccepted| SERVICE_ACCEPT_STOP"), DisplayName ("Служба принимает остановку")

Указывает, можно ли остановить службу.

Это свойство наследуется от Win32_BaseService.

Caption

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MaxLen (64), DisplayName ("Caption")

Краткое описание службы — однострочный текст.

Это свойство наследуется от CIM_ManagedSystemElement.

Контрольной точки

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS|dwCheckPoint"), DisplayName ("Check Point Count")

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

CreationClassName

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: CIM_Key, DisplayName ("Имя класса")

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

Это свойство наследуется от CIM_Service.

DelayedAutoStart

Тип данных: boolean

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_DELAYED_AUTO_START_INFO|fDelayedAutostart"), DisplayName ("Отложенный автозапуск")

Если задано значение True, служба запускается после запуска других служб автозапуска и небольшой задержки.

Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 8, Windows Server 2008 R2, Windows 7, Windows Server 2008 и Windows Vista: это свойство не поддерживается до Windows Server 2016 и Windows 10 .

Описание

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: DisplayName ("Описание")

Описание объекта.

Это свойство наследуется от CIM_ManagedSystemElement.

DesktopInteract

Тип данных: boolean

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| QUERY_SERVICE_CONFIG|dwServiceType| SERVICE_INTERACTIVE_PROCESS"), DisplayName ("Взаимодействует с рабочим столом")

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

Это свойство наследуется от Win32_BaseService.

Отображаемое имя

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| QUERY_SERVICE_CONFIG|lpDisplayName"), DisplayName ("Отображаемое имя")

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

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

Пример: "Atdisk"

Это свойство наследуется от Win32_BaseService.

ErrorControl

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| QUERY_SERVICE_CONFIG|dwErrorControl"), DisplayName ("Серьезность сбоя при запуске")

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

Ignore ("Ignore")

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

Normal ("Normal")

Пользователь получает уведомление. Обычно это окно сообщения, уведомляющее пользователя о проблеме.

Тяжелый ("Тяжелый")

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

Критический ("Критический")

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

Unknown ("Unknown")

Серьезность ошибки неизвестна.

Это свойство наследуется от Win32_BaseService.

ExitCode

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS|dwWin32ExitCode"), DisplayName ("Код выхода")

Код ошибки Windows, определяющий ошибки, возникшие при запуске или остановке службы. Этому свойству присваивается значение ERROR_SERVICE_SPECIFIC_ERROR (1066), если ошибка является уникальной для службы, представленной этим классом, а сведения об ошибке доступны в свойстве ServiceSpecificExitCode . Служба задает для этого значения значение NO_ERROR при запуске и снова при обычном завершении работы.

Это свойство наследуется от Win32_BaseService.

InstallDate

Тип данных: datetime

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("MIF. DMTF| ComponentID|001.5"), DisplayName ("Дата установки")

Дата установки объекта. Для этого свойства не требуется значение, указывающее, что объект установлен.

Это свойство наследуется от CIM_ManagedSystemElement.

имя;

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: Ключ

Уникальный идентификатор службы, который указывает на управляемые функциональные возможности. Эта функция описана в свойстве Description объекта .

Это свойство наследуется от CIM_ManagedSystemElement.

PathName

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| QUERY_SERVICE_CONFIG|lpBinaryPathName"), DisplayName ("Имя пути к файлу")

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

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

Это свойство наследуется от Win32_BaseService.

ProcessId

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS_PROCESS|dwProcessId"), DisplayName ("Идентификатор процесса")

Идентификатор процесса службы.

Пример: 324

ServiceSpecificExitCode

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS|dwServiceSpecificExitCode"), DisplayName ("Код выхода для конкретного сервера")

Код ошибки службы для ошибок, возникающих во время запуска или остановки службы. Коды выхода определяются службой, представленной этим классом. Это значение задается, только если свойство ExitCodeимеет значение ERROR_SERVICE_SPECIFIC_ERROR (1066).

Это свойство наследуется от Win32_BaseService.

ServiceType

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| QUERY_SERVICE_CONFIG|dwServiceType"), DisplayName ("Тип службы")

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

Значения качества производительности:

Драйвер ядра ("Драйвер ядра")

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

Адаптер ("Адаптер")

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

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

Общий процесс ("Процесс предоставления общего доступа")

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

Это свойство наследуется от Win32_BaseService.

Приступая к работе

Тип данных: boolean

Тип доступа: только для чтения

Квалификаторы: DisplayName ("Started")

Указывает, запущена ли служба.

Это свойство наследуется от CIM_Service.

StartMode

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: DisplayName ("Режим запуска")

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

Boot ("Boot")

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

System ("System")

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

Auto ("Auto")

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

Manual ("Manual")

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

Disabled ("Disabled")

Служба, которая не может быть запущена, пока ее startMode не будет изменена на Auto или Manual.

Это свойство наследуется от CIM_Service.

StartName

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| QUERY_SERVICE_CONFIG|lpServiceStartName"), DisplayName ("Имя стартовой учетной записи")

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

Пример: "DWDOM\Администратор"

Это свойство наследуется от Win32_BaseService.

Состояние

Тип данных: string

Тип доступа: чтение и запись

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS|dwCurrentState "), DisplayName ("State")

Текущее состояние базовой службы.

Значения качества производительности:

Остановлено ("Остановлено")

Ожидание запуска ("Ожидание запуска")

Остановить ожидание ("Остановить ожидание")

Running ("Running")

Продолжить ожидание ("Продолжить в ожидании")

Приостановка ожидания ("Пауза в ожидании")

Приостановлено ("Приостановлено")

Unknown ("Unknown")

Windows Server 2008 и Windows Vista: Это свойство доступно только для чтения перед Windows 7 и Windows Server 2008 R2.

Это свойство наследуется от Win32_BaseService.

Состояние

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MaxLen (10), DisplayName ("Status")

Текущее состояние объекта. Можно определить различные операционные и нерабочие состояния. Операционные состояния: "ОК", "Понижено" и "Сбой pred" (элемент, например жесткий диск с поддержкой SMART, может работать правильно, но прогнозирует сбой в ближайшем будущем). К нерабочим состояниям относятся: "Ошибка", "Запуск", "Остановка" и "Служба". Последняя служба может применяться во время зеркало повторного изменения диска, перезагрузки списка разрешений пользователя или других административных действий. Не вся такая работа находится в сети, но управляемый элемент не является ни "ОК", ни в одном из других состояний.

Это свойство наследуется от CIM_ManagedSystemElement.

Значения качества производительности:

ОК ("ОК")

Error ("Error")

Пониженный ("Пониженный")

Unknown ("Unknown")

Pred Fail ("Pred Fail")

Запуск ("Запуск")

Остановка ("Остановка")

Служба ("Служба")

Подчеркнуто ("подчеркнуто")

NonRecover ("NonRecover")

Нет контакта ("Нет контакта")

Lost Comm ("Lost Comm")

SystemCreationClassName

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: распространяется ("CIM_System. CreationClassName"), CIM_Key, DisplayName ("Имя класса системы")

Имя типа системы, в котором размещена эта служба.

Это свойство наследуется от CIM_Service.

SystemName

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: распространяется ("CIM_System. Name"), CIM_Key, DisplayName ("System Name")

Имя системы, в котором размещена эта служба.

Это свойство наследуется от CIM_Service.

TagId

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| QUERY_SERVICE_CONFIG|dwTagId"), DisplayName ("Идентификатор тега")

Уникальное значение тега для этой службы в группе. Значение 0 (ноль) указывает, что у службы нет тега . Тег можно использовать для заказа запуска службы в группе заказов загрузки, указав вектор порядка тегов в реестре, расположенном по адресу:

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

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

Это свойство наследуется от Win32_BaseService.

WaitHint

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Структуры служб| SERVICE_STATUS|dwWaitHint"), DisplayName ("Предполагаемое время ожидания")

Предполагаемое время в миллисекундах для ожидающей операции запуска, остановки, приостановки или продолжения. По истечении указанного времени служба выполняет следующий вызов метода SetServiceStatus с добавочным значением CheckPoint или изменением в CurrentState. Если время, указанное waitHint , прошло, а CheckPoint не было увеличено или CurrentState не изменилось, диспетчер управления службами или программа управления службами предполагает, что произошла ошибка.

Комментарии

Класс Win32_Service является производным от Win32_BaseService.

Способ управления конкретным компьютером в значительной степени зависит от роли, которую играет компьютер. Например, обычно вы отслеживаете различные аспекты DNS-сервера, чем DHCP-сервер. Хотя ни одно свойство не может определить, является ли конкретный компьютер сервером базы данных, сервером электронной почты или мультимедийным сервером, часто можно определить роль компьютера, определяя службы, установленные на нем.

В крупных организациях на одном компьютере, скорее всего, будет установлена только одна из основных служб (например, электронная почта). Было бы необычным для почтового сервера также выступать в качестве сервера для файлов проигрывателя технологий Microsoft® Windows Media®. Поэтому определение службы, установленной на компьютере, может помочь определить роль компьютера в сети. Если служба Microsoft® Exchange Server установлена и запущена на компьютере, обычно можно предположить, что этот компьютер работает как почтовый сервер.

Для перечисления служб, установленных на компьютере, можно использовать класс WMI Win32_Service . Кроме того, этот класс можно использовать для определения того, запущены ли эти службы в настоящее время, и для возврата других необходимых сведений об этой службе и о том, как она была настроена.

Приложение-служба соответствует правилам интерфейса диспетчера управления службами (SCM) и может запускаться пользователем автоматически при запуске системы с помощью служебной программы панели управления службы или приложением, использующим функции службы, включенные в API Windows. Службы могут запускаться, если на компьютере нет пользователей, вошедшего в систему.

Пользователь, подключающийся с удаленного компьютера, должен иметь разрешение SC_MANAGER_CONNECT , чтобы иметь возможность перечислять этот класс. Дополнительные сведения см. в разделе Service Security and Access Rights.

Примеры

Запрос PS-WMI, возвращающий состояние службы для группы устройств в примере PowerShell в коллекции TechNet, использует Win32_Service для создания списка устройств из Active Directory, а затем запрашивает каждое устройство, которое отвечает с запросом ping для конкретной запущенной службы.

Пример PowerShell для отчета о сервере в коллекции TechNet использует Win32_Service для сбора сведений о сервере и публикации в Word документе.

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

for each Service in _ 
    GetObject("winmgmts:").InstancesOf ("Win32_Service")
 WScript.Echo ""
 WScript.Echo Service.Name

 description = Service.Description 
 if IsNull(description) then description = "<No description>"

 pathName = Service.PathName
 if IsNull(pathName) then pathName = "<No path>"

 startName = Service.StartName
 if IsNull(startName) then startName = "<None>"

 WScript.Echo "  Description:  ", description
 WScript.Echo "  Executable:   ", pathName
 WScript.Echo "  Status:       ", Service.Status
 WScript.Echo "  State:        ", Service.State
 WScript.Echo "  Start Mode:   ", Service.StartMode
 Wscript.Echo "  Start Name:   ", startName
next

В следующем примере кода VBScript описаны приостановленные, запущенные и остановленные службы на указанном компьютере.

On Error Resume Next
 StateString = "Paused,Running,Stopped"
 StateArray = Split(StateString, ",", -1, 1) 
 ComputerName = InputBox("Enter the computer name", "List Service", "localhost")

 For x = 0 to Ubound (StateArray)
 Set Services = GetObject("winmgmts:\\" & ComputerName & "\Root\CIMv2").ExecQuery("SELECT * FROM Win32_Service where State='" & StateArray(x) & "'")
 
 For Each Service in Services
  SList = SList & Service.Name & VBlf 
 Next

 WScript.Echo StateArray(x) & " Services: " & VBlf & SList
 SList = ""

Next

В следующем скрипте Perl показано, как получить список запущенных служб из экземпляров Win32_Service.

use strict;
use Win32::OLE;

my ( $ServiceSet, $Service );

eval { $ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\Root\\CIMv2")->
 ExecQuery("SELECT * FROM Win32_Service WHERE State=\"Running\""); };
unless ($@)
{
 print "\n";
 foreach $Service (in $ServiceSet) 
 {
  print $Service->{Name}, "\n";
  if( $Service->{Description} ) 
   {
    print "  $Service->{Description}\n";
   }
  else
   {
    print "  <No description>\n";
   }
  print "  Process ID: ", $Service->{ProcessId}, "\n";
  print "  Start Mode: ", $Service->{StartMode}, "\n";
  print "\n";
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

В следующем примере c# используется Microsoft.Management.Infrastructure для получения всех запущенных служб на локальном компьютере.

static void QueryInstanceFunc()
        {
 
            CimSession session = CimSession.Create("localHost");
            IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Service");

            foreach (CimInstance cimObj in queryInstance)
            {
                Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString());
                Console.WriteLine(cimObj.CimInstanceProperties["State"].ToString());
                Console.WriteLine(cimObj.CimInstanceProperties["Status"].ToString());
                
                //Console.WriteLine(cimObj.CimInstanceProperties["NetworkAddress"].ToString());
                Console.WriteLine();

            }

            Console.ReadLine();
        }
    

В следующем примере кода C# используется пространство имен System.Management для получения всех запущенных служб на локальном компьютере.

Примечание

System.Management содержит исходные классы, используемые для доступа к WMI; однако они считаются медленнее и обычно не масштабируются так же, как их аналоги Microsoft.Management.Infrastructure .

 

using System.Management;
...
        static void oldSchoolQueryInstanceFunc()
        {

            ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Service");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);


            ManagementObjectCollection queryCollection = searcher.Get();
            foreach (ManagementObject m in queryCollection)
            {
                Console.WriteLine("ServiceName : {0}", m["Name"]);
                Console.WriteLine("State : {0}", m["State"]);
                Console.WriteLine("Status : {0}", m["Status"]);
                Console.WriteLine();
            }

            Console.ReadLine();


        }

Требования

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

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

Win32_BaseService

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

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