Come individuare i processi in esecuzione all’interno del Windows Service Host Process (svchost.exe)

Introduzione

Il processo Windows Service Host (noto anche come svchost, il cui file eseguibile è C:\WINDOWS\system32\svchost.exe) è un processo speciale utilizzato da Windows per eseguire istanze multiple di servizi e processi, che possono essere avviati sia da un file eseguibile (.EXE) che da una libraria a collegamento dinamico (.DLL). In ogni momento possono essere in esecuzione molteplici istanze di questo processo ed ognuna di esse aggiunge ulteriore carico di lavoro al sistema.
A volte può essere utile o necessario sapere esattamente quali processi o servizi sono eseguiti all’interno di una specifica instanza del processo Service Host: esistono diversi modi per ricavare questa informazione utilizzando gli strumenti messi a disposizione dal sistema operativo o utility aggiuntive: andiamo a vedere come fare.

Utilizzare il Windows Task Manager

Il task Manager (o Gestione Attività) permette all’utente di individuare i processi in esecuzione all’interndo di una specifica istanza del processo svchost.exe; prima di tutto, fare sulla scheda Details, quindi fare click sulla colonna “PID” per ordinare la lista dei processi in esecuzione in base al relativo process ID (l’ordinamento crescente è la scelta preferibile): in questo esempio, prendiamo in considerazione il processo il cui PID è 528.


Quindi si deve fare click sulla scheda Services e poi sulla colonna “PID” per applicare nuovamente l’ordinamento crescente ma alla lista dei servizi: adesso individuiamo il numero del PID a cui siamo interessati (528, in questo esempio) è si potrà facilmente identificare il servizio corrispondente.


Utilizzando il Task Manager di Windows 10 è anche possibile fare click sulla scheda Processes, individuare il process ID dell’istanza del processo svchost.exe e fare click sul segno “>” alla sinistra del suo nome per espandere e visualizzare la la lista dei processi in esecuzione in quell’istanza.


Utilizzare il Command Prompt di Windows

Il comando tasklist può essere utilizzato per ottenere un elenco in formato tabellare di tutti i processi svchost in esecuzione correlati del rispettivo ID e dei nomi di tutti i servizi in esecuzione all’interno di ogni istanza: per ottenere queste informazioni, aprire una finestra del prompt dei comandi ed eseguire il comando tasklist /svc /fi “imagename eq svchost.exe”.


Utilizzare Windows PowerShell

Utilizzando Windows PowerShell si deve, prima di tutto, ottenere l’elenco di tutte le istanze del processo svchost.exe in esecuzione nel sistema, eseguendo il cmdlet Get-Process e filtrandone l’output in base al nome del processo (la proprietà ProcessName della collezione System.Diagnostics.Process restituita dal cmdlet).


Volendo applicare un filtro all’output (in questo esempio, siamo alla ricerca del processo il cui ID è 528), è possibile restringere ulteriormente il numero di istanze visualizzate nell’output selezionando solo uno specifico valore per la proprietà “Id” della collezione di oggetti restituiti; quindi, eseguiremo il cmdlet Get-WmiObject per ottenere le informazioni sulla classe Win32_Service corrispondente al tipo di processo a cui siamo interessati.


Utilizzare Process Explorer

Process Explorer è una versione più ricca di funzionalità del Task Manager di Windows liberamente disponibile per il download da https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer. Nell’insieme delle sue utili funzionalità, Process Explorer consente anche di visualizzare informazioni sui servizi in esecuzione all’interno di una specifica istanza del processo Windows Service Host process: è sufficiente muovere il mouse su un’istanza di svchost.exe per vedere l’elenco dei servizi in esso eseguiti visualizzato all’interno di un tooltip.


Queste informazioni possono essere ricavate anche facendo click con il tasto destro del mouse su un’istanza di svchost.exe e selezionando Properties…: nella finestra delle proprietà, fare click sulla scheda Services per ottenere informazioni dettagliate sui servizi registrati in quell’istanza del processo Service Host.