Classe Win32_Process

La classe WMI Win32_Processrappresenta un processo in un sistema operativo.

La sintassi seguente è semplificata dal codice MOF (Managed Object Format) e include tutte le proprietà ereditate.

Nota

Per una discussione generale sui processi e i thread all'interno di Windows, vedere l'argomento Processi e thread.

Sintassi

[Dynamic, Provider("CIMWin32"), SupportsCreate, CreateBy("Create"), SupportsDelete, DeleteBy("DeleteInstance"), UUID("{8502C4DC-5FBB-11D2-AAC1-006008C78BC7}"), DisplayName("Processes"), AMENDMENT]
class Win32_Process : CIM_Process
{
  string   CreationClassName;
  string   Caption;
  string   CommandLine;
  datetime CreationDate;
  string   CSCreationClassName;
  string   CSName;
  string   Description;
  string   ExecutablePath;
  uint16   ExecutionState;
  string   Handle;
  uint32   HandleCount;
  datetime InstallDate;
  uint64   KernelModeTime;
  uint32   MaximumWorkingSetSize;
  uint32   MinimumWorkingSetSize;
  string   Name;
  string   OSCreationClassName;
  string   OSName;
  uint64   OtherOperationCount;
  uint64   OtherTransferCount;
  uint32   PageFaults;
  uint32   PageFileUsage;
  uint32   ParentProcessId;
  uint32   PeakPageFileUsage;
  uint64   PeakVirtualSize;
  uint32   PeakWorkingSetSize;
  uint32   Priority;
  uint64   PrivatePageCount;
  uint32   ProcessId;
  uint32   QuotaNonPagedPoolUsage;
  uint32   QuotaPagedPoolUsage;
  uint32   QuotaPeakNonPagedPoolUsage;
  uint32   QuotaPeakPagedPoolUsage;
  uint64   ReadOperationCount;
  uint64   ReadTransferCount;
  uint32   SessionId;
  string   Status;
  datetime TerminationDate;
  uint32   ThreadCount;
  uint64   UserModeTime;
  uint64   VirtualSize;
  string   WindowsVersion;
  uint64   WorkingSetSize;
  uint64   WriteOperationCount;
  uint64   WriteTransferCount;
};

Membri

La classe Win32_Process ha questi tipi di membri:

Metodi

La classe Win32_Process dispone di questi metodi.

Metodo Descrizione
AttachDebugger Avvia il debugger attualmente registrato per un processo.
Crea Crea un nuovo processo.
GetAvailableVirtualSize Recupera le dimensioni correnti, in byte, dello spazio indirizzi virtuale disponibile per il processo.
Windows Server 2012, Windows 8, Windows 7, Windows Server 2008 e Windows Vista: questo metodo non è supportato prima di Windows 8.1 e Windows Server 2012 R2.
GetOwner Recupera il nome utente e il nome di dominio in cui è in esecuzione il processo.
GetOwnerSid Recupera l'identificatore di sicurezza (SID) per il proprietario di un processo.
SetPriority Modifica la priorità di esecuzione di un processo.
Terminate. Termina un processo e tutti i relativi thread.

 

Proprietà

La classe Win32_Process ha queste proprietà.

Caption

Tipo di dati: string

Tipo di accesso: sola lettura

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

Breve descrizione di un oggetto, ovvero una stringa di una riga.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

Commandline

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Riga di comando per avviare il processo")

Riga di comando usata per avviare un processo specifico, se applicabile.

CreationClassName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: CIM_Key, MaxLen (256), DisplayName ("Nome classe")

Nome della classe o della sottoclasse utilizzata nella creazione di un'istanza di . Se utilizzata con altre proprietà chiave della classe, questa proprietà consente di identificare in modo univoco tutte le istanze della classe e delle relative sottoclassi.

Questa proprietà viene ereditata da CIM_Process.

CreationDate

Tipo di dati: datetime

Tipo di accesso: sola lettura

Qualificatori: Fixed, DisplayName ("CreationDate")

Data di inizio dell'esecuzione del processo.

Questa proprietà viene ereditata da CIM_Process.

CSCreationClassName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: propagati ("CIM_OperatingSystem.CSCreationClassName"), CIM_Key, MaxLen (256), DisplayName ("Computer System Class Name")

Nome della classe di creazione del sistema informatico di ambito.

Questa proprietà viene ereditata da CIM_Process.

CSName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: propagati ("CIM_OperatingSystem.CSName"), CIM_Key, MaxLen (256), DisplayName ("Computer System Name")

Nome del sistema computer di definizione dell'ambito.

Questa proprietà viene ereditata da CIM_Process.

Descrizione

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Description")

Descrizione di un oggetto.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

ExecutablePath

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: Privilegi ("SeDebugPrivilege"), MappingStrings ("Win32API|Strutture della Guida degli strumenti |MODUL edizione Enterprise NTRY32|szExePath"), DisplayName ("Percorso eseguibile")

Percorso del file eseguibile del processo.

Esempio: "C:\Windows\System\Explorer.Exe"

ExecutionState

Tipo di dati: uint16

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Stato di esecuzione")

Condizione operativa corrente del processo.

Questa proprietà viene ereditata da CIM_Process.

Sconosciuto (0)

Sconosciuto

Altro (1)

Altro

Pronto (2)

Esecuzione (3)

Bloccato (4)

Bloccato

Sospeso bloccato (5)

Pronto sospeso (6)

Terminazione (7)

Arrestato (8)

In crescita (9)

Handle

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: Key, MaxLen (256), DisplayName ("Handle")

Identificatore del processo.

Questa proprietà viene ereditata da CIM_Process.

HandleCount

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|HandleCount"), DisplayName ("Handle Count")

Numero totale di handle aperti di proprietà del processo. HandleCount è la somma degli handle attualmente aperti da ogni thread in questo processo. Un handle viene usato per esaminare o modificare le risorse di sistema. Ogni handle ha una voce in una tabella gestita internamente. Le voci contengono gli indirizzi delle risorse e dei dati per identificare il tipo di risorsa.

InstallDate

Tipo di dati: datetime

Tipo di accesso: sola lettura

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

Data di installazione di un oggetto. L'oggetto può essere installato senza scrivere un valore in questa proprietà.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

KernelModeTime

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: override ("KernelModeTime"), unità ("100 nanosecondi")

Tempo in modalità kernel, espresso in millisecondi. Se queste informazioni non sono disponibili, usare il valore 0 (zero).

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

MaximumWorkingSetSize

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: privilegi ("SeDebugPrivilege"), MappingStrings ("Win32|WINNT. H|QUOTA_LIMITS|MaximumWorkingSetSize"), DisplayName ("Dimensioni massime set di lavoro"), Unità ("kilobyte")

Dimensione massima del set di lavoro del processo. Il working set di un processo è il set di pagine di memoria visibili al processo nella RAM fisica. Queste pagine sono residenti e sono disponibili per l'uso di un'applicazione senza attivare un errore di pagina.

Esempio: 1413120

MinimumWorkingSetSize

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: privilegi ("SeDebugPrivilege"), MappingStrings ("Win32|WINNT. H|QUOTA_LIMITS|MinimumWorkingSetSize"), DisplayName ("Dimensioni minimo set di lavoro"), Unità ("kilobyte")

Dimensioni minime del set di lavoro del processo. Il working set di un processo è il set di pagine di memoria visibili al processo nella RAM fisica. Queste pagine sono residenti e disponibili per un'applicazione da usare senza attivare un errore di pagina.

Esempio: 20480

Nome

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Name")

Nome del file eseguibile responsabile del processo, equivalente alla proprietà Nome immagine in Gestione attività.

Se ereditato da una sottoclasse, è possibile eseguire l'override della proprietà come proprietà chiave. Il nome è hardcoded nell'applicazione stessa e non è interessato dalla modifica del nome del file. Ad esempio, anche se si rinomina Calc.exe, il nome Calc.exe verrà comunque visualizzato in Gestione attività e in tutti gli script WMI che recuperano il nome del processo.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

OSCreationClassName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: propagati ("CIM_OperatingSystem.CreationClassName"), CIM_Key, MaxLen (256), DisplayName ("Operating System Class Name")

Nome della classe di creazione del sistema operativo di definizione dell'ambito.

Questa proprietà viene ereditata da CIM_Process.

OSName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: propagati ("CIM_OperatingSystem.Name"), CIM_Key, MaxLen (256), DisplayName ("Operating System Name")

Nome del sistema operativo di definizione dell'ambito.

Questa proprietà viene ereditata da CIM_Process.

OtherOperationCount

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture di processi e thread |SYSTEM_PROCESS_INFORMATION|OtherOperationCount"), DisplayName ("Altro conteggio operazioni")

Numero di operazioni di I/O eseguite che non sono operazioni di lettura o scrittura.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

OtherTransferCount

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture di processi e thread |SYSTEM_PROCESS_INFORMATION|OtherTransferCount"), DisplayName ("altro conteggio trasferimenti"), unità ("byte")

Quantità di dati trasferiti durante le operazioni che non sono operazioni di lettura o scrittura.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

PageFaults

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|PageFaultCount"), DisplayName ("Numero di errori di pagina")

Numero di errori di pagina generati da un processo.

Esempio 10:

PageFileUsage

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|PagefileUsage"), DisplayName ("Utilizzo file di pagina"), unità ("kilobyte")

Quantità di spazio di file di pagina attualmente usata da un processo. Questo valore è coerente con il valore VMSize in TaskMgr.exe.

Esempio: 102435

ParentProcessId

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|InheritedFromUniqueProcessId"), DisplayName ("ID processo padre")

Identificatore univoco del processo che crea un processo. I numeri di identificatore di processo vengono riutilizzati, quindi identificano solo un processo per la durata del processo. È possibile che il processo identificato da ParentProcessId venga terminato, pertanto ParentProcessId potrebbe non fare riferimento a un processo in esecuzione. È anche possibile che ParentProcessId faccia erroneamente riferimento a un processo che riutilizza un identificatore di processo. È possibile utilizzare la proprietà CreationDate per determinare se l'elemento padre specificato è stato creato dopo la creazione del processo rappresentato da questa istanza Win32_Process .

PeakPageFileUsage

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|PeakPagefileUsage"), DisplayName ("Utilizzo picco file di pagina"), unità ("kilobyte")

Quantità massima di spazio di file di pagina utilizzata durante la durata di un processo.

Esempio: 102367

PeakVirtualSize

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|PeakVirtualSize"), DisplayName ("Utilizzo dello spazio indirizzi viruale di picco"), unità ("byte")

Spazio indirizzi virtuale massimo usato da un processo in qualsiasi momento. L'uso dello spazio indirizzi virtuale non implica necessariamente l'uso corrispondente di pagine di memoria principale o disco. Tuttavia, lo spazio virtuale è finito e l'uso di una quantità eccessiva di processo potrebbe non essere in grado di caricare le librerie.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

PeakWorkingSetSize

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|PeakWorkingSetSize"), DisplayName ("Peak Working Set Size"), Unità ("kilobyte")

Picco delle dimensioni del working set di un processo.

Esempio: 1413120

Priorità

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: Override ("Priorità"), MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|BasePriority"), DisplayName ("Priority")

Priorità di pianificazione di un processo all'interno di un sistema operativo. Maggiore è il valore, maggiore è la priorità che riceve un processo. I valori di priorità possono variare da 0 (zero), ovvero la priorità più bassa a 31, ovvero la priorità più alta.

Esempio 7:

PrivatePageCount

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|PrivatePageCount"), DisplayName ("Conteggio pagine private")

Numero corrente di pagine allocate accessibili solo al processo rappresentato da questa istanza di Win32_Process .

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

Processid

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture di processi e thread |PROCESS_INFORMATION|dwProcessId "), DisplayName ("ID processo")

Identificatore numerico usato per distinguere un processo da un altro. I processID sono validi dal momento della creazione del processo alla terminazione del processo. Al termine, lo stesso identificatore numerico può essere applicato a un nuovo processo.

Ciò significa che non è possibile usare solo ProcessID per monitorare un processo specifico. Ad esempio, un'applicazione potrebbe avere un ProcessID pari a 7 e quindi non riuscire. Quando viene avviato un nuovo processo, è possibile assegnare il nuovo processo ProcessID 7. Uno script che ha controllato solo un ProcessID specificato potrebbe quindi essere "ingannato" pensando che l'applicazione originale fosse ancora in esecuzione.

QuotaNonPagedPoolUsage

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|QuotaNonPagedPoolUsage"), DisplayName ("Quota di utilizzo pool non di paging")

Quantità di quota di utilizzo del pool non di paging per un processo.

Esempio: 15

QuotaPagedPoolUsage

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|QuotaPagedPoolUsage"), DisplayName ("Quota di utilizzo pool di pagine")

Quantità di quota di utilizzo del pool di paging per un processo.

Esempio: 22

QuotaPeakNonPagedPoolUsage

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|QuotaPeakNonPagedPoolUsage"), DisplayName ("Quota di utilizzo del pool non di paging di picco")

Quota massima di utilizzo del pool non di paging per un processo.

Esempio: 31

QuotaPeakPagedPoolUsage

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|QuotaPeakPagedPoolUsage"), DisplayName ("Quota di utilizzo del pool di paging di picco")

Quota massima di utilizzo del pool di paging per un processo.

Esempio: 31

ReadOperationCount

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture di processi e thread |SYSTEM_PROCESS_INFORMATION|ReadOperationCount"), DisplayName ("Read Operation Count")

Numero di operazioni di lettura eseguite.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

ReadTransferCount

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture di processi e thread |SYSTEM_PROCESS_INFORMATION|ReadTransferCount"), DisplayName ("Read Transfer Count"), Unità ("byte")

Quantità di dati letti.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

SessionId

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|SessionId"), DisplayName ("ID sessione")

Identificatore univoco generato da un sistema operativo quando viene creata una sessione. Una sessione si estende per un periodo di tempo dall'accesso fino alla disconnessione da un sistema specifico.

Stato

Tipo di dati: string

Tipo di accesso: sola lettura

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

Questa proprietà non è implementata e non viene popolata per alcuna istanza di questa classe. È sempre NULL.

Questa proprietà viene ereditata da CIM_ManagedSystemElement.

Sono inclusi i valori seguenti:

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 ")

TerminazioneDate

Tipo di dati: datetime

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Data di chiusura")

Il processo è stato arrestato o terminato. Per ottenere il tempo di terminazione, è necessario che un handle per il processo venga mantenuto aperto. In caso contrario, questa proprietà restituisce NULL.

Questa proprietà viene ereditata da CIM_Process.

ThreadCount

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|NumberOfThreads"), DisplayName ("Conteggio thread")

Numero di thread attivi in un processo. Un'istruzione è l'unità di base dell'esecuzione in un processore e un thread è l'oggetto che esegue un'istruzione. Ogni processo in esecuzione ha almeno un thread.

UserModeTime

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: override ("UserModeTime"), unità ("100 nanosecondi")

Tempo in modalità utente, in unità di 100 nanosecondi. Se queste informazioni non sono disponibili, usare il valore 0 (zero).

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

VirtualSize

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Stato processo |SYSTEM_PROCESS_INFORMATION|VirtualSize"), DisplayName ("Utilizzo spazio indirizzi virtuali"), unità ("byte")

Dimensioni correnti dello spazio indirizzi virtuale usato da un processo, non la memoria fisica o virtuale effettivamente usata dal processo. L'uso dello spazio indirizzi virtuale non implica necessariamente l'uso corrispondente di pagine di memoria principale o disco. Lo spazio virtuale è finito e, usando troppo, il processo potrebbe non essere in grado di caricare le librerie. Questo valore è coerente con ciò che viene visualizzato in Perfmon.exe.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

WindowsVersion

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Funzioni di elaborazione e thread |GetProcessVersion"), DisplayName ("Versione di Windows")

Versione di Windows in cui è in esecuzione il processo.

Esempio: 4.0

WorkingSetSize

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: DisplayName ("Working Set Size"), Unità ("byte")

Quantità di memoria in byte che un processo deve essere eseguito in modo efficiente, per un sistema operativo che usa la gestione della memoria basata su pagine. Se il sistema non dispone di memoria sufficiente (minore delle dimensioni del working set), viene eseguito il thrashing. Se le dimensioni del working set non sono note, usare NULL o 0 (zero). Se vengono forniti dati del set di lavoro, è possibile monitorare le informazioni per comprendere i requisiti di memoria mutevoli di un processo.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

Questa proprietà viene ereditata da CIM_Process.

WriteOperationCount

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture di processi e thread |SYSTEM_PROCESS_INFORMATION|WriteOperationCount"), DisplayName ("Write Operation Count")

Numero di operazioni di scrittura eseguite.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

WriteTransferCount

Tipo di dati: uint64

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API|Strutture di processi e thread |SYSTEM_PROCESS_INFORMATION|WriteTransferCount"), DisplayName ("Write Transfer Count"), Unità ("byte")

Quantità di dati scritti.

Per altre informazioni sull'uso di valori uint64 negli script, vedere Scripting in WMI.

Osservazioni:

La classe Win32_Process deriva da CIM_Process. Il processo chiamante che utilizza questa classe deve avere il privilegio edizione Standard_RESTORE_NAME nel computer in cui risiede il Registro di sistema. Per altre informazioni, vedere Esecuzione di operazioni con privilegi.

Panoramica

Elabora quasi tutto ciò che accade in un computer. Infatti, la causa radice della maggior parte dei problemi del computer può essere tracciata ai processi; Ad esempio, un numero eccessivo di processi potrebbe essere in esecuzione in un computer (e la contesa di un set finito di risorse) oppure un singolo processo potrebbe usare più della relativa condivisione di risorse. Questi fattori rendono importante tenere d'occhio i processi in esecuzione in un computer. Il monitoraggio dei processi, l'attività principale nella gestione dei processi, consente di determinare il funzionamento effettivo di un computer, le applicazioni eseguite dal computer e il modo in cui tali applicazioni sono interessate dalle modifiche nell'ambiente di elaborazione.

Monitoraggio di un processo

Il monitoraggio dei processi su base regolare consente di garantire che un computer venga eseguito al picco di efficienza e che esegua le attività designate come previsto. Ad esempio, monitorando i processi è possibile ricevere una notifica immediata di qualsiasi applicazione che ha smesso di rispondere e quindi eseguire i passaggi per terminare tale processo. Inoltre, il monitoraggio dei processi consente di identificare i problemi prima che si verifichino. Ad esempio, controllando ripetutamente la quantità di memoria usata da un processo, è possibile identificare una perdita di memoria. È quindi possibile arrestare il processo prima che l'applicazione errant usi tutta la memoria disponibile e porti il computer a un arresto.

Il monitoraggio dei processi consente anche di ridurre al minimo le interruzioni causate da interruzioni pianificate per gli aggiornamenti e la manutenzione. Ad esempio, controllando lo stato di un'applicazione di database in esecuzione nei computer client, è possibile determinare l'impatto della modalità offline del database per aggiornare il software.

Monitoraggio della disponibilità dei processi. Misura la percentuale di tempo in cui è disponibile un processo. La disponibilità viene in genere monitorata tramite un semplice probe, che indica se il processo è ancora in esecuzione. Tenendo traccia dei risultati di ogni probe, è possibile calcolare la disponibilità del processo. Ad esempio, un processo sottoposto a probe 100 volte e risponde su 95 di tali occasioni ha una disponibilità del 95%. Questo tipo di monitoraggio è in genere riservato per database, programmi di posta elettronica e altre applicazioni che devono essere eseguite in qualsiasi momento. Non è appropriato per programmi di elaborazione delle parole, fogli di calcolo o altre applicazioni che vengono regolarmente avviate e arrestate più volte al giorno.

È possibile creare un'istanza della classe Win32_ProcessStartup per configurare il processo.

È possibile monitorare le prestazioni dei processi con la classe Win32_PerfFormattedData_PerfProc_Process e un oggetto refresher WMI, ad esempio SWbemRefresher. Per altre informazioni, vedere Monitoraggio dei dati sulle prestazioni.

Esempi

Nell'argomento Esempio: Chiamata di un metodo provider, il codice usa C++ per chiamare Win32_Process per creare un processo.

La disponibilità è la forma più semplice di monitoraggio dei processi: con questo approccio, è sufficiente assicurarsi che il processo sia in esecuzione. Quando si monitora la disponibilità dei processi, in genere si recupera un elenco di processi in esecuzione in un computer e quindi si verifica che un processo specifico sia ancora attivo. Se il processo è attivo, viene considerato disponibile. Se il processo non è attivo, non è disponibile. L'esempio VBScript seguente monitora la disponibilità dei processi controllando l'elenco dei processi in esecuzione in un computer e inviando una notifica se il processo Database.exe non viene trovato.

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'Database.exe'")
If colProcesses.Count = 0 Then
 Wscript.Echo "Database.exe is not running."
Else
 Wscript.Echo "Database.exe is running."
End If

L'esempio VBScript seguente monitora la creazione del processo usando un consumer di eventi temporaneo.

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent " _
                                                     & "WITHIN 10 WHERE TargetInstance ISA 'Win32_Process'")
i = 0
Do While i = 0
 Set objLatestProcess = colMonitoredProcesses.NextEvent
 Wscript.Echo objLatestProcess.TargetInstance.Name, Now
Loop

Il codice VBScript seguente monitora le informazioni sulle prestazioni dei processi.

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process")
For Each objProcess in colProcessList
 Wscript.Echo "Process: " & objProcess.Name
 Wscript.Echo "Process ID: " & objProcess.ProcessID
 Wscript.Echo "Thread Count: " & objProcess.ThreadCount
 Wscript.Echo "Page File Size: " & objProcess.PageFileUsage
 Wscript.Echo "Page Faults: " & objProcess.PageFaults
 Wscript.Echo "Working Set Size: " & objProcess.WorkingSetSize
Next

Nell'esempio di codice VBScript seguente viene illustrato come ottenere il proprietario di ogni processo in un computer locale. È possibile usare questo script per ottenere dati da un computer remoto, ad esempio per determinare quali utenti hanno processi che eseguono il server terminal, sostituire il nome del computer remoto per "." nella prima riga. È anche necessario essere un amministratore nel computer remoto.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery("select * from win32_process" )
For Each objProcess in colProcesses

  If objProcess.GetOwner ( User, Domain ) = 0 Then
    Wscript.Echo "Process " & objProcess.Caption & " belongs to " & Domain & "\" & User
  Else
    Wscript.Echo "Problem " & Rtn & " getting the owner for process " & objProcess.Caption
  End If
Next

Nell'esempio di codice VBScript seguente viene illustrato come ottenere la sessione di accesso associata a un processo in esecuzione. Prima dell'avvio dello script, è necessario eseguire un processo Blocco note.exe. L'esempio individua le istanze di Win32_LogonSession associate al Win32_Process che rappresenta Blocco note.exe. Win32_SessionProcess viene specificato come classe di associazione. Per altre informazioni, vedere ASSOCIATORS OF Statement..

On error resume next
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcesses
  ProcessId = objProcess.ProcessId
  Set colLogonSessions = objWMIService.ExecQuery("Associators of {Win32_Process='" & ProcessId & "'} " _
                                               & "Where Resultclass = Win32_LogonSession Assocclass = Win32_SessionProcess", "WQL", 48)
  If Err <> 0 Then
    WScript.Echo "Error on associators query= " & Err.number & " " & Err.Description
    WScript.Quit
  End If
  For Each LogonSession in colLogonSessions
    Wscript.Echo " Logon id is " & LogonSession.LogonId
  Next
Next

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

CIM_Process

Classi del sistema operativo

Attività WMI: processi