classe Win32_Service

La classe WMI Win32_Servicerappresenta un servizio in un sistema computer che esegue Windows.

La sintassi seguente è semplificata dal codice MOF (Managed Object Format) e include tutte le proprietà ereditate. Le proprietà e i metodi sono in ordine alfabetico, non in ordine MOF.

Sintassi

[Dynamic, Provider("CIMWin32"), SupportsUpdate, UUID("{8502C4D9-5FBB-11D2-AAC1-006008C78BC7}"), DisplayName("Services"), AMENDMENT]
class Win32_Service : Win32_BaseService
{
  boolean  AcceptPause;
  boolean  AcceptStop;
  string   Caption;
  uint32   CheckPoint;
  string   CreationClassName;
  boolean  DelayedAutoStart;
  string   Description;
  boolean  DesktopInteract;
  string   DisplayName;
  string   ErrorControl;
  uint32   ExitCode;
  datetime InstallDate;
  string   Name;
  string   PathName;
  uint32   ProcessId;
  uint32   ServiceSpecificExitCode;
  string   ServiceType;
  boolean  Started;
  string   StartMode;
  string   StartName;
  string   State;
  string   Status;
  string   SystemCreationClassName;
  string   SystemName;
  uint32   TagId;
  uint32   WaitHint;
};

Membri

La classe Win32_Service include questi tipi di membri:

Metodi

La classe Win32_Service dispone di questi metodi.

Metodo Descrizione
Modifica Modifica un servizio.
ChangeStartMode Modifica la modalità di avvio di un servizio.
Crea Crea un nuovo servizio.
CANC Elimina un servizio esistente.
GetSecurityDescriptor Restituisce il descrittore di sicurezza che controlla l'accesso al servizio.
InterrogateService Richiede che un servizio aggiorni lo stato a Service Manager.
PauseService Tenta di posizionare un servizio nello stato sospeso.
ResumeService Tenta di posizionare un servizio nello stato ripreso.
SetSecurityDescriptor Scrive una versione aggiornata del descrittore di sicurezza che controlla l'accesso al servizio.
Startservice Tenta di inserire un servizio nello stato di avvio.
StopService Posiziona un servizio nello stato arrestato.
UserControlService Tenta di inviare un codice di controllo definito dall'utente a un servizio.

 

Proprietà

La classe Win32_Service ha queste proprietà.

AcceptPause

Tipo di dati: booleano

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS|dwControlsAccepted|edizione StandardRVICE_ACCEPT_PAUedizione Standard_CONTINUE"), DisplayName ("Service Accetta pausa")

Indica se il servizio può essere sospeso.

Questa proprietà viene ereditata da Win32_BaseService.

AcceptStop

Tipo di dati: booleano

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS|dwControlsAccepted|edizione StandardRVICE_ACCEPT_STOP"), DisplayName ("Service Accetta arresto")

Indica se il servizio può essere arrestato.

Questa proprietà viene ereditata da Win32_BaseService.

Caption

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MaxLen (64), DisplayName ("Caption")

Breve descrizione del servizio, ovvero una stringa di una riga.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

Checkpoint

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS|dwCheckPoint"), DisplayName ("Check Point Count")

Valore che il servizio incrementa periodicamente per segnalare lo stato di avanzamento durante un'operazione di avvio, arresto, sospensione o continuazione. Ad esempio, il servizio incrementa questo valore man mano che completa ogni passaggio della relativa inizializzazione all'avvio. Il programma dell'interfaccia utente che richiama l'operazione sul servizio usa questo valore per tenere traccia dello stato di avanzamento del servizio durante un'operazione lunga. Questo valore non è valido e deve essere zero quando il servizio non dispone di un'operazione di avvio, arresto, sospensione o continuazione in sospeso.

CreationClassName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: CIM_Key, DisplayName ("Nome classe")

Nome della prima classe concreta da visualizzare nella catena di ereditarietà utilizzata nella creazione di un'istanza. Se utilizzata con le altre proprietà chiave della classe , questa proprietà consente di identificare in modo univoco tutte le istanze di questa classe e delle relative sottoclassi.

Questa proprietà viene ereditata da CIM_Service.

DelayedAutoStart

Tipo di dati: booleano

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_DELAYED_AUTO_START_INFO|fDelayedAutostart"), DisplayName ("Avvio automatico ritardato")

Se True, il servizio viene avviato dopo l'avvio automatico di altri servizi e un breve ritardo.

Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 8, Windows Server 2008 R2, Windows 7, Windows Server 2008 e Windows Vista: questa proprietà non è supportata prima di Windows Server 2016 e Windows 10.

Descrizione

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Description")

Descrizione dell'oggetto.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

DesktopInteract

Tipo di dati: booleano

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |QUERY_edizione StandardRVICE_CONFIG|dwServiceType|edizione StandardRVICE_INTERACTIVE_PROCESS"), DisplayName ("Interagisce con desktop")

Indica se il servizio può creare o comunicare con le finestre sul desktop e quindi interagire in qualche modo con un utente. I servizi interattivi devono essere eseguiti con l'account di sistema locale. La maggior parte dei servizi non è interattiva; ovvero, non comunicano con l'utente in alcun modo.

Questa proprietà viene ereditata da Win32_BaseService.

DisplayName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |QUERY_edizione StandardRVICE_CONFIG|lpDisplayName"), DisplayName ("Nome visualizzato")

Nome del servizio come visualizzato nello snap-in Servizi. La lunghezza massima della stringa è di 256 caratteri. Si noti che il nome visualizzato e il nome del servizio (archiviato nel Registro di sistema) non sono sempre uguali. Ad esempio, il servizio client DHCP ha il nome del servizio Dhcp, ma il nome visualizzato Client DHCP. Il nome viene mantenuto senza distinzione tra maiuscole e minuscole in Gestione controllo servizi. Tuttavia, i confronti displayName non fanno sempre distinzione tra maiuscole e minuscole.

Vincolo: accetta lo stesso valore della proprietà Name .

Esempio: "Atdisk"

Questa proprietà viene ereditata da Win32_BaseService.

ErrorControl

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |QUERY_edizione StandardRVICE_CONFIG|dwErrorControl"), DisplayName ("Gravità dell'errore di avvio")

Gravità dell'errore se il servizio non viene avviato durante l'avvio. Il valore indica l'azione eseguita dal programma di avvio in caso di errore. Tutti gli errori vengono registrati dal computer.

Ignora ("Ignora")

L'utente non viene notificato.

Normale ("Normale ")

L'utente viene notificato. In genere si tratta di una finestra di messaggio che informa l'utente del problema.

Grave ("Grave")

Il sistema viene riavviato con l'ultima configurazione valida nota.

Critico ("Critico ")

Il sistema tenta un riavvio con una configurazione valida. Se il servizio non viene avviato una seconda volta, l'avvio ha esito negativo.

Sconosciuto ("Sconosciuto")

Gravità dell'errore sconosciuta.

Questa proprietà viene ereditata da Win32_BaseService.

ExitCode

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS|dwWin32ExitCode"), DisplayName ("Codice di uscita")

Codice di errore di Windows che definisce gli errori riscontrati durante l'avvio o l'arresto del servizio. Questa proprietà viene impostata su ERROR_SERVICE_SPECIFIC_ERROR (1066) quando l'errore è univoco per il servizio rappresentato da questa classe. Le informazioni relative all'errore sono disponibili nella proprietà ServiceSpecificExitCode . Il servizio imposta questo valore su NO_ERROR durante l'esecuzione e di nuovo alla chiusura normale.

Questa proprietà viene ereditata da Win32_BaseService.

InstallDate

Tipo di dati: datetime

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("MIF. DMTF |ComponentID|001.5"), DisplayName ("Data di installazione")

Data di installazione dell'oggetto . Questa proprietà non richiede un valore per indicare che l'oggetto è installato.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

Nome

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: Chiave

Identificatore univoco del servizio che fornisce un'indicazione della funzionalità gestita. Questa funzionalità è descritta nella proprietà Description dell'oggetto .

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

PathName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |QUERY_edizione StandardRVICE_CONFIG|lpBinaryPathName"), DisplayName ("Nome percorso file")

Percorso completo del file binario del servizio che implementa il servizio.

Esempio: "\SystemRoot\System32\drivers\afd.sys"

Questa proprietà viene ereditata da Win32_BaseService.

Processid

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS_PROCESS|dwProcessId"), DisplayName ("ID processo")

Identificatore del processo del servizio.

Esempio: 324

ServiceSpecificExitCode

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS|dwServiceSpecificExitCode"), DisplayName ("Codice di uscita specifico del server")

Codice di errore specifico del servizio per gli errori che si verificano durante l'avvio o l'arresto del servizio. I codici di uscita sono definiti dal servizio rappresentato da questa classe. Questo valore viene impostato solo quando il valore della proprietà ExitCode è ERROR_edizione StandardRVICE_SPECIFIC_ERROR (1066).

Questa proprietà viene ereditata da Win32_BaseService.

Servicetype

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |QUERY_edizione StandardRVICE_CONFIG|dwServiceType"), DisplayName ("Tipo di servizio")

Tipo di servizio fornito ai processi chiamanti.

I valori sono:

Driver kernel ("driver kernel")

Driver file system ("driver file system")

Adapter ("Adapter ")

Driver Recognizer ("Recognizer Driver")

Processo personale ("Processo personale")

Processo di condivisione ("processo di condivisione")

Processo interattivo ("processo interattivo")

Questa proprietà viene ereditata da Win32_BaseService.

Introduzione

Tipo di dati: booleano

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Started")

Indica se il servizio è stato avviato o meno.

Questa proprietà viene ereditata da CIM_Service.

StartMode

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("modalità start")

Modalità di avvio del servizio di base di Windows.

Avvio ("Avvio ")

Driver di dispositivo avviato dal caricatore del sistema operativo (valido solo per i servizi driver).

Sistema ("Sistema")

Driver di dispositivo avviato dal processo di inizializzazione del sistema operativo. Questo valore è valido solo per i servizi del driver.

Auto ("Auto ")

Servizio da avviare automaticamente da Gestione controllo servizi durante l'avvio del sistema. I servizi automatici vengono avviati anche se un utente non esegue l'accesso.

Manuale ("Manuale")

Servizio da avviare da Service Control Manager quando un processo chiama il metodo StartService . Questi servizi non vengono avviati a meno che un utente non accinga e li avvii.

Disabilitato ("Disabilitato ")

Servizio che non può essere avviato fino a quando startMode non viene modificato in Automatico o Manuale.

Questa proprietà viene ereditata da CIM_Service.

StartName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |QUERY_edizione StandardRVICE_CONFIG|lpServiceStartName"), DisplayName ("Nome account iniziale")

Nome dell'account con cui viene eseguito un servizio. A seconda del tipo di servizio, il nome dell'account può essere nel formato "DomainName\Username" o UPN ("Username@DomainName"). Il processo del servizio viene registrato usando una di queste due forme durante l'esecuzione. Se l'account appartiene al dominio predefinito, è possibile specificare ".\Username". Per i driver a livello di kernel o di sistema, StartName contiene il nome dell'oggetto driver (ovvero "\FileSystem\Rdr" o "\Driver\Xns") usato dal sistema di I/O per caricare il driver di dispositivo. Inoltre, se si specifica NULL , il driver viene eseguito con un nome di oggetto predefinito creato dal sistema di I/O in base al nome del servizio.

Esempio: "DWDOM\Amministrazione"

Questa proprietà viene ereditata da Win32_BaseService.

Stato

Tipo di dati: string

Tipo di accesso: lettura/scrittura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS|dwCurrentState "), DisplayName ("State")

Stato corrente del servizio di base.

I valori sono:

Arrestato ("Arrestato")

Inizio in sospeso ("Inizio in sospeso ")

Stop Pending ("Stop Pending ")

Esecuzione ("in esecuzione ")

Continua in sospeso ("Continua in sospeso")

Sospendi in sospeso ("Sospendi in sospeso")

Sospeso ("sospeso ")

Sconosciuto ("Sconosciuto")

Windows Server 2008 e Windows Vista: questa proprietà è di sola lettura prima di Windows 7 e Windows Server 2008 R2.

Questa proprietà viene ereditata da Win32_BaseService.

Stato

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MaxLen (10), DisplayName ("Status")

Stato corrente dell'oggetto. È possibile definire vari stati operativi e non operativi. Gli stati operativi includono: "OK", "Degraded" e "Pred Fail" (un elemento, ad esempio un'unità disco rigido abilitata per SMART, potrebbe funzionare correttamente, ma prevedere un errore nel prossimo futuro). Gli stati non operativi includono: "Error", "Starting", "Stopping" e "Service". Quest'ultimo, "Servizio", può essere applicato durante il ridimensionamento mirror di un disco, il ricaricamento di un elenco di autorizzazioni utente o altre operazioni amministrative. Non tutte queste operazioni sono online, ma l'elemento gestito non è "OK" né in uno degli altri stati.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

I valori sono:

OK ("OK ")

Errore ("Errore ")

Degradato ("degradato")

Sconosciuto ("Sconosciuto")

Pred Fail ("Pred Fail ")

Avvio ("Starting ")

Arresto ("arresto ")

Servizio ("Servizio")

Sottolineato ("sottolineato ")

NonRecover ("NonRecover ")

Nessun contatto ("Nessun contatto ")

Lost Comm ("Lost Comm ")

SystemCreationClassName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: propagati ("CIM_System.CreationClassName"), CIM_Key, DisplayName ("System Class Name")

Digitare il nome del sistema che ospita il servizio.

Questa proprietà viene ereditata da CIM_Service.

Systemname

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: propagati ("CIM_System.Name"), CIM_Key, DisplayName ("System Name")

Nome del sistema che ospita questo servizio.

Questa proprietà viene ereditata da CIM_Service.

TagId

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |QUERY_edizione StandardRVICE_CONFIG|dwTagId"), DisplayName ("Id tag")

Valore di tag univoco per questo servizio nel gruppo. Il valore 0 (zero) indica che il servizio non ha un tag. È possibile usare un tag per ordinare l'avvio del servizio all'interno di un gruppo di ordini di carico specificando un vettore di ordine tag nel Registro di sistema all'indirizzo:

\HKEY_LOCAL_MACHINE System\CurrentControlSet\Control\    GroupOrderList

I tag vengono valutati solo per i servizi del tipo di avvio driver kernel e driver del file system con modalità di avvio di avvio o di sistema.

Questa proprietà viene ereditata da Win32_BaseService.

WaitHint

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture dei servizi |edizione StandardRVICE_STATUS|dwWaitHint"), DisplayName ("Tempo di attesa stimato")

Tempo stimato necessario, in millisecondi, per un'operazione di avvio, arresto, sospensione o continuazione in sospeso. Dopo che è trascorso il tempo specificato, il servizio effettua la chiamata successiva al metodo SetServiceStatus con un valore CheckPoint incrementato o una modifica in CurrentState. Se l'intervallo di tempo specificato da WaitHint passa e CheckPoint non è stato incrementato oppure CurrentState non è stato modificato, il gestore del controllo del servizio o il programma di controllo del servizio presuppone che si sia verificato un errore.

Osservazioni:

La classe Win32_Service deriva da Win32_BaseService.

Il modo in cui si gestisce un computer specifico dipende notevolmente dal ruolo svolto dal computer. Ad esempio, in genere si monitorano aspetti diversi di un server DNS rispetto a un server DHCP. Anche se nessuna singola proprietà può indicare se un determinato computer è un server di database, un server di posta elettronica o un server multimediale, è spesso possibile identificare il ruolo svolto da un computer identificando i servizi installati.

Nelle organizzazioni di grandi dimensioni, è probabile che in un singolo computer sia installato solo uno dei servizi principali, ad esempio la posta elettronica. Sarebbe insolito che un server di posta esegua anche come server per i file lettore delle tecnologie Microsoft® Windows Media®. Per questo motivo, l'identificazione di un servizio installato in un computer può aiutare a identificare il ruolo del computer nella rete. Se il servizio Microsoft® Exchange Server è installato e in esecuzione in un computer, è in genere consigliabile presupporre che il computer funzioni come server di posta elettronica.

È possibile usare la classe WMI Win32_Service per enumerare i servizi installati in un computer. Inoltre, è possibile usare questa classe per determinare se tali servizi sono attualmente in esecuzione e per restituire eventuali altre informazioni necessarie su tale servizio e su come è stato configurato.

Un'applicazione di servizio è conforme alle regole di interfaccia di Service Control Manager (SCM) e può essere avviata automaticamente da un utente all'avvio del sistema tramite l'utilità del Pannello di controllo dei servizi o da un'applicazione che usa le funzioni del servizio incluse nell'API Windows. I servizi possono essere avviati quando non sono presenti utenti connessi al computer.

Un utente che si connette da un computer remoto deve avere il privilegio SC_MANAGER_CONNECT abilitato per poter enumerare questa classe. Per altre informazioni, vedere Sicurezza dei servizi e diritti di accesso.

Esempi

Nell'esempio di codice VBScript seguente vengono visualizzati tutti i servizi attualmente installati.

for each Service in _ 
    GetObject("winmgmts:").InstancesOf ("Win32_Service")
 WScript.Echo ""
 WScript.Echo Service.Name

 description = Service.Description 
 if IsNull(description) then description = "<No description>"

 pathName = Service.PathName
 if IsNull(pathName) then pathName = "<No path>"

 startName = Service.StartName
 if IsNull(startName) then startName = "<None>"

 WScript.Echo "  Description:  ", description
 WScript.Echo "  Executable:   ", pathName
 WScript.Echo "  Status:       ", Service.Status
 WScript.Echo "  State:        ", Service.State
 WScript.Echo "  Start Mode:   ", Service.StartMode
 Wscript.Echo "  Start Name:   ", startName
next

Nell'esempio di codice VBScript seguente vengono descritti i servizi sospesi, in esecuzione e arrestati nel computer specificato.

On Error Resume Next
 StateString = "Paused,Running,Stopped"
 StateArray = Split(StateString, ",", -1, 1) 
 ComputerName = InputBox("Enter the computer name", "List Service", "localhost")

 For x = 0 to Ubound (StateArray)
 Set Services = GetObject("winmgmts:\\" & ComputerName & "\Root\CIMv2").ExecQuery("SELECT * FROM Win32_Service where State='" & StateArray(x) & "'")
 
 For Each Service in Services
  SList = SList & Service.Name & VBlf 
 Next

 WScript.Echo StateArray(x) & " Services: " & VBlf & SList
 SList = ""

Next

Lo script Perl seguente illustra come recuperare un elenco di servizi in esecuzione da istanze di Win32_Service.

use strict;
use Win32::OLE;

my ( $ServiceSet, $Service );

eval { $ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\Root\\CIMv2")->
 ExecQuery("SELECT * FROM Win32_Service WHERE State=\"Running\""); };
unless ($@)
{
 print "\n";
 foreach $Service (in $ServiceSet) 
 {
  print $Service->{Name}, "\n";
  if( $Service->{Description} ) 
   {
    print "  $Service->{Description}\n";
   }
  else
   {
    print "  <No description>\n";
   }
  print "  Process ID: ", $Service->{ProcessId}, "\n";
  print "  Start Mode: ", $Service->{StartMode}, "\n";
  print "\n";
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

L'esempio c# seguente usa Microsoft.Management.Infrastructure per recuperare tutti i servizi in esecuzione nel computer locale.

static void QueryInstanceFunc()
        {
 
            CimSession session = CimSession.Create("localHost");
            IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Service");

            foreach (CimInstance cimObj in queryInstance)
            {
                Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString());
                Console.WriteLine(cimObj.CimInstanceProperties["State"].ToString());
                Console.WriteLine(cimObj.CimInstanceProperties["Status"].ToString());
                
                //Console.WriteLine(cimObj.CimInstanceProperties["NetworkAddress"].ToString());
                Console.WriteLine();

            }

            Console.ReadLine();
        }
    

L'esempio di codice C# seguente usa lo spazio dei nomi System.Management per recuperare tutti i servizi in esecuzione nel computer locale.

Nota

System.Management contiene le classi originali usate per accedere a WMI, ma sono considerate più lente e in genere non vengono ridimensionate e le controparti Microsoft.Management.Infrastructure .

 

using System.Management;
...
        static void oldSchoolQueryInstanceFunc()
        {

            ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Service");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);


            ManagementObjectCollection queryCollection = searcher.Get();
            foreach (ManagementObject m in queryCollection)
            {
                Console.WriteLine("ServiceName : {0}", m["Name"]);
                Console.WriteLine("State : {0}", m["State"]);
                Console.WriteLine("Status : {0}", m["Status"]);
                Console.WriteLine();
            }

            Console.ReadLine();


        }

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

Win32_BaseService

Classi del sistema operativo

Attività WMI: Servizi