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


Метод PauseService класса Win32_Service (поставщики WMI CIMWin32)

Метод класса PauseService WMI пытается поместить службу в приостановленное состояние.

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

Синтаксис

uint32 PauseService();

Параметры

Этот метод не имеет параметров.

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

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

0

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

1

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

2

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

3

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

4

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

5

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

6

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

7

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

8

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

9

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

10

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

11

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

12

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

13

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

14

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

15

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

16

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

17

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

18

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

19

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

20

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

21

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

22

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

23

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

24

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

Комментарии

Определив, какие службы можно остановить или приостановить, можно использовать методы StopService и PauseService для остановки и приостановки служб. Решение о том, чтобы остановить службу, а не приостановить ее, или наоборот, зависит от нескольких факторов, в том числе следующих:

  • Может ли служба быть приостановлена? В противном случае единственным вариантом является остановка службы.
  • Нужно ли продолжать обработку клиентских запросов для всех пользователей, уже подключенных к службе? Если это так, то приостановка службы обычно позволяет ей обрабатывать существующие клиенты, запрещая доступ к новым клиентам. Напротив, при остановке службы все клиенты немедленно отключаются.
  • Нужно ли перенастроить службу и немедленно вступить в силу изменения? Хотя свойства службы можно изменить во время приостановки службы, большинство из них не вступают в силу, пока служба не будет остановлена и не перезапущена.

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

Примеры

Пример приостановки служб, работающих под определенной учетной записью VBScript, приостанавливает все службы, работающие под гипотетической учетной записью службы "Netsvc".

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

Примечание

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

Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='Schedule'")

for each Service in ServiceSet
 SupportsPause = Service.AcceptPause
 if SupportsPause = true then
  RetVal = Service.PauseService()
  if RetVal = 0 then 
   WScript.Echo "Service paused"   
  else
   if RetVal = 1 then 
    WScript.Echo "Pause not supported" 
   else WScript.Echo "An error occurred:" & RetVal
   End If
  End If
 else
  WScript.Echo "Service does not support pause"
 end if
next

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

Примечание

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

use strict;
use Win32::OLE;

my ($ServiceSet, $SupportsPause, $RetVal);  
eval {$ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\Root\\CIMv2")->
 ExecQuery("SELECT * FROM Win32_Service WHERE Name='Schedule'"); };
unless($@)
{
 foreach my $ServiceInst (in $ServiceSet)
 {
  if ($ServiceInst->{AcceptPause})
  {
   $RetVal = $ServiceInst->PauseService();
   if ($RetVal == 0)
   {
    print "\nService paused\n";
   }
   else
   {
    if ($RetVal == 1)
    {
     print "\nPause not supported\n" ;
    }
    else 
    {
     print "\nAn error occurred:", $RetVal, "\n";
    }
   } 
  }
  else
  {
   print "\nService does not support pause\n";
  }
 }
}
else
{
 print STDERR "\n", Win32::OLE->LastError, "\n";
}

Требования

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

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

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

Win32_Service

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

StopService