Windows Server 2003: kill process e wait

Mi appunto questo tips che ho dovuto utilizzare su un server RDS in ambiente 2003 R2 Sp2, dove agli utenti RDP veniva avviato non il desktop, ma una sola applicazione.

Lo scenario è quello di una linea di produzione industriale in cui i Thin Client devono eseguire un’applicazione di monitoraggio che a sua volta apre minimizzato un secondo eseguibile.

La problematica è quella di arrestare anche questo secondo eseguibile prima di disconnettersi, possibilmente in modo corretto, ma nel caso dopo 5 secondi il processo non si arresti eseguile il kill forzato del processo.

E’ possibile gestire questo tipo di necessità impostando l’utente ad avviare uno script (che nel mio caso ho impostato direttamente sulla connessone RDP configurata sul Thin Clinet):

image 

Per quanto riguarda lo script è possibile strutturarlo come segue:

REM Avvio Applicazione principale
START /MAX /WAIT ApplicazionePrincipale.exe

REM Kill dell’eventuale processo dell’Applicazione Secondaria
taskkill /im ApplicazioneSecondaria.exe

REM Wait di 5 secondi
timeout /t 5 /nobreak

REM Kill forzato dell’eventuale processo dell’Applicazione Secondaria se ancora attivo
taskkill /im ApplicazioneSecondaria.exe

REM Logoff
LOGOFF

Volendo è possibile anche gestire il controllo dell’esistenza del processo tramite il comando Tasklist utilizzato in combinazione al comando Taskkill.

Per gestire l’attesa in Windows Server 2003 è disponibile nativamente il comando timeout.