Compartilhar via


Método PauseService da classe Win32_Service (Provedores WMI CIMWin32)

O método de classe WMIPauseService tenta colocar o serviço no estado em pausa.

Este tópico usa a sintaxe MOF (Managed Object Format). Para obter mais informações sobre como usar esse método, consulte Chamando um método.

Sintaxe

uint32 PauseService();

Parâmetros

Esse método não tem parâmetros.

Valor retornado

Retorna um dos valores listados na lista a seguir ou qualquer outro valor para indicar um erro. Para obter códigos de erro adicionais, consulte Constantes de erro WMI ou WbemErrorEnum. Para obter valores gerais de HRESULT , consulte Códigos de erro do sistema.

0

A solicitação foi aceita.

1

A solicitação não terá suporte.

2

O usuário não tinha o acesso necessário.

3

O serviço não pode ser interrompido, porque outros serviços em execução dependem dele.

4

O código de controle pedido não é válido ou é inaceitável para o serviço.

5

O código de controle solicitado não pode ser enviado ao serviço porque o estado do serviço (Win32_BaseService. Propriedade State ) é igual a 0, 1 ou 2.

6

O serviço não foi iniciado.

7

O serviço não respondeu à solicitação de início em um tempo oportuno.

8

Falha desconhecida ao iniciar o serviço.

9

O caminho do diretório para o arquivo executável do serviço não foi encontrado.

10

O serviço já está em execução.

11

O banco de dados para adicionar um serviço novo está bloqueado.

12

Uma dependência da qual esse serviço depende foi removida do sistema.

13

O serviço não localizou o serviço necessário em um serviço dependente.

14

O serviço foi desabilitado do sistema.

15

O serviço não tem a autenticação correta para ser executado no sistema.

16

Esse serviço está sendo removido do sistema.

17

O serviço não tem thread de execução.

18

O serviço tem dependências circulares quando é iniciado.

19

Um serviço está em execução com o mesmo nome.

20

O nome do serviço tem caracteres inválidos.

21

Parâmetros inválidos foram passados para o serviço.

22

A conta na qual esse serviço é executado é inválida ou não tem as permissões para executar o serviço.

23

O serviço existe no banco de dados de serviços disponível no sistema.

24

O serviço está pausado atualmente no sistema.

Comentários

Depois de determinar quais serviços podem ser interrompidos ou pausados, você pode usar os métodos StopService e PauseService para interromper e pausar os serviços. A decisão de interromper um serviço em vez de pausar, ou vice-versa, depende de vários fatores, incluindo o seguinte:

  • O serviço é capaz de ser pausado? Caso contrário, sua única opção é interromper o serviço.
  • Você precisa continuar tratando solicitações de cliente para qualquer pessoa já conectada ao serviço? Nesse caso, pausar um serviço normalmente permite que ele manipule clientes existentes enquanto nega o acesso a novos clientes. Por outro lado, quando você interrompe um serviço, todos os clientes são desconectados imediatamente.
  • Você precisa reconfigurar um serviço e fazer com que as alterações entrem em vigor imediatamente? Embora as propriedades de serviço possam ser alteradas enquanto um serviço está em pausa, a maioria delas não tem efeito até que o serviço seja realmente interrompido e reiniciado.

O código de script necessário para interromper um serviço é quase idêntico ao código necessário para pausar o serviço.

Exemplos

O exemplo pausar serviços em execução em uma conta específica VBScript pausa todos os serviços em execução na conta de serviço hipotética "Netsvc".

O exemplo de código VBScript a seguir demonstra como pausar um serviço específico de instâncias de Win32_Service.

Observação

O serviço deve dar suporte à pausa e já estar em execução.

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

O exemplo de código Perl a seguir demonstra como pausar um serviço específico de instâncias de Win32_Service.

Observação

O serviço deve dar suporte à pausa e já estar em execução.

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";
}

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Namespace
Root\cimv2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Confira também

Classes do sistema operacional

Win32_Service

Tarefas do WMI: Serviços

StopService