Metodo Delete della classe Win32_Service (provider WMI CIMWin32)

Il metodo dellaclasse Delete WMI elimina un servizio esistente.

In questo argomento viene utilizzata la sintassi MOF (Managed Object Format). Per altre informazioni sull'uso di questo metodo, vedere Chiamata di un metodo.

Sintassi

uint32 Delete();

Parametri

Questo metodo non presenta parametri.

Valore restituito

Restituisce uno dei valori elencati nell'elenco seguente o qualsiasi altro valore per indicare un errore. Per altri codici di errore, vedere Costanti di errore WMI o WbemErrorEnum. Per i valori HRESULT generali, vedere Codici di errore di sistema.

0

La richiesta è stata accettata.

1

La richiesta non è supportata.

2

L'utente non ha avuto l'accesso necessario.

3

Impossibile arrestare il servizio perché altri servizi in esecuzione dipendono dal servizio.

4

Il codice di controllo richiesto non è valido o non è accettabile per il servizio.

5

Impossibile inviare il codice di controllo richiesto al servizio perché lo stato del servizio (Win32_BaseService. Proprietà state ) è uguale a 0, 1 o 2.

6

Il servizio non è stato avviato.

7

Il servizio non ha risposto in tempo utile alla richiesta di avvio.

8

Errore sconosciuto all'avvio del servizio.

9

Il percorso della directory del file eseguibile del servizio non è stato trovato.

10

Il servizio è già in esecuzione.

11

Il database a cui aggiungere il nuovo servizio è bloccato.

12

Una dipendenza da cui si basa questo servizio è stata rimossa dal sistema.

13

Impossibile trovare un servizio dipendente necessario.

14

Il servizio è stato disabilitato dal sistema.

15

Il servizio non dispone delle credenziali di autenticazione corrette per l'esecuzione nel sistema.

16

Questo servizio viene rimosso dal sistema.

17

Il servizio non ha alcun thread di esecuzione.

18

Il servizio ha dipendenze circolari all'avvio.

19

Un servizio viene eseguito con lo stesso nome.

20

Il nome del servizio contiene caratteri non validi.

21

I parametri non validi sono stati passati al servizio.

22

L'account con cui viene eseguito il servizio non è valido o non dispone delle autorizzazioni per l'esecuzione del servizio.

23

Il servizio esiste già nel database dei servizi disponibili dal sistema.

24

Il servizio è attualmente sospeso nel sistema.

Commenti

Man mano che l'organizzazione cambia, è possibile decidere di rimuovere determinati servizi da determinati computer. I servizi interni e di terze parti possono essere rimossi tramite WMI, mentre i servizi del sistema operativo possono essere rimossi tramite Sysocmgr.exe.

Quando si prepara a rimuovere i servizi, tenere presenti le informazioni seguenti:

  • I servizi devono essere arrestati prima di rimuoverli. Se il servizio è in esecuzione quando si esegue il comando delete, il servizio viene contrassegnato per l'eliminazione, ma continua a essere eseguito finché non viene arrestato e tutti gli handle aperti vengono chiusi.

    Se il servizio non viene mai arrestato, il servizio non verrà mai eliminato.

  • La rimozione di un servizio non rimuove il file eseguibile del servizio.

    La rimozione di un servizio tramite WMI elimina le voci del Registro di sistema correlate in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Di conseguenza, il servizio non è più installato e non è disponibile tramite lo snap-in Servizi. TUTTAVIA, WMI non elimina il file eseguibile, vale a dire che è possibile reinstallare facilmente il servizio. Per eliminare il file eseguibile, è necessario recuperare il nome del percorso e quindi eliminare il file.

  • La rimozione di un servizio Windows 2000 di base (ad esempio DHCP) tramite WMI elimina le voci del Registro di sistema per tale servizio, ma non rimuove il collegamento dal menu Strumenti di amministrazione o rimuove il servizio dalla Creazione guidata componenti di Windows. Ciò può confondere chiunque cercando di determinare come è stato configurato il computer.

    Ad esempio, se si rimuove il servizio DHCP usando uno script WMI, il servizio DHCP non è più elencato nello snap-in Servizi. Tuttavia, un collegamento non funzionante alla console DHCP rimane nel menu Strumenti di amministrazione e, se si avvia la Creazione guidata componente di Windows, indica che il servizio DHCP è installato.

    Per questo motivo, è consigliabile usare sempre Sysocmgr.exe per rimuovere i servizi di Windows 2000 a livello di codice.

Esempio

Nell'esempio di codice VBScript seguente viene descritto come eliminare un servizio.

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

Nell'esempio di codice Perl seguente viene descritto come eliminare un servizio.

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

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Spazio dei nomi
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Vedi anche

Classi del sistema operativo

Win32_Service

Attività WMI: Servizi