Partilhar via


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

O método de classe DeleteWMI exclui um serviço existente.

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 Delete();

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 em que 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 sob a 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

Conforme sua organização muda, você pode decidir remover determinados serviços de determinados computadores. Os serviços internos e de terceiros podem ser removidos usando o WMI, enquanto os serviços do sistema operacional podem ser removidos usando Sysocmgr.exe.

Ao se preparar para remover serviços, tenha em mente as seguintes informações:

  • Os serviços devem ser interrompidos antes de removê-los. Se o serviço estiver em execução quando você emitir o comando delete, o serviço será marcado para exclusão, mas ele continuará a ser executado até que ele pare e todas as alças abertas sejam fechadas.

    Se o serviço nunca for interrompido, esse serviço nunca será excluído.

  • A remoção de um serviço não remove o arquivo executável do serviço.

    Remover um serviço usando o WMI exclui as entradas relacionadas do Registro em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Como resultado, o serviço não está mais instalado e não está disponível por meio do snap-in Serviços. No entanto, o WMI não exclui o arquivo executável, o que significa que você pode reinstalar facilmente o serviço. Para excluir o arquivo executável, você deve recuperar o nome do caminho e, em seguida, excluir o arquivo.

  • Remover um serviço base do Windows 2000 (por exemplo, DHCP) usando o WMI exclui as entradas do Registro desse serviço, mas não remove o atalho do menu Ferramentas Administrativas ou remove o serviço do Assistente de Componentes do Windows. Isso pode confundir qualquer pessoa que tente determinar como o computador foi configurado.

    Por exemplo, se você remover o serviço DHCP usando um script WMI, o serviço DHCP não estará mais listado no snap-in Serviços. No entanto, um atalho não funcional para o console DHCP permanece no menu Ferramentas Administrativas e, se você iniciar o Assistente de Componente do Windows, ele indicará que o serviço DHCP está instalado.

    Por isso, você sempre deve usar Sysocmgr.exe para remover programaticamente os serviços do Windows 2000.

Exemplos

O exemplo de código VBScript a seguir descreve como excluir um serviço.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_Service WHERE Name = 'DbService'")
For Each objService in colListOfServices
 objService.StopService()
 objService.Delete()
Next

O exemplo de código Perl a seguir descreve como excluir um serviço.

use strict;
use Win32::OLE;

my ($Service, $ServiceSet) ;
eval {$ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}")->
 ExecQuery("SELECT * FROM Win32_Service WHERE Name='MyService'");};
unless($@)
{
 foreach $Service (in $ServiceSet)
 {
  my $RetVal = $Service->Delete();
  if ($RetVal == 0)  
  {
   print "Service deleted \n"; 
  }
  else  
  {
   print "Delete failed: %d", $RetVal;
  }
 }
}
else
{
 print STDERR 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