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 |
|
DLL |
|