View Full Version : XP - Killare sottoprocessi 16bit tramite WM_QUIT (via PostThreadMessage())
Salve, avrei bisogno di sapere come killare questi tipi di processi:
http://img18.imageshack.us/img18/1711/taskkill.jpg
Li ho selezionati con un quadrato rosso. Tali processi fanno riferimento all'exe sottolineato : "ntvdm.exe".
Io però avrei bisogno di killare solo uno di quelli ovvero il "datacom.exe".
Per killare intendo dare il comando via "taskkill" da "cmd", ho provato ma mi dice che non esiste nessun processo con tale nome. L'unica sarebbe killare il "ntvdm.exe" ma così mi killerebbe tutti i sottoprocessi nel quadrato rosso mentre io vorrei togliere solo il "datacom". Come devo fare?
Il comando su "cmd" da me è usato è "Taskkill \im \f datacom.exe".
Grazie in anticipo.
P.S. Scusate il "Killare" ma scrivere "uccidere" non era cosa graziosa XD
tallines
21-07-2011, 19:59
Ciao, e fare la ricerca nel registro e cancellare la voce ?
In che senso? Io non devo rimuovere il file permanentemente ma solo killarlo quando voglio io.
Blue_screen_of_death
22-07-2011, 15:24
gli altri sottoprocessi li riesci a killare?
ad esempio il wowexec.exe?
No non riesco a killare nessuno di quei sottoprocessi :\ mi sembra che non ci sia soluzione =(
Nicodemo Timoteo Taddeo
22-07-2011, 17:21
No non riesco a killare nessuno di quei sottoprocessi :\ mi sembra che non ci sia soluzione =(
AFAIK ed IMHO non puoi killare nessuno di quei processi perché girano in una sorta di macchina virtuale creata allo scopo di permettere l'esecuzione di programmi a 16 bit su NT. Infatti come vedi non è stato assegnato loro nessun PID visto che non sono normali processi.
L'unica, sempre AFAIK, è uccidere l'intero sottosistema Virtual DOS Machine, ntvdm.exe.
Saluti.
Si infatti girano a 16 bit. Però dal task manager posso killarli singolarmente col mouse, quindi se lì li posso, posso killarli anche in altri modi o comunque almeno tramite cmd. Ci deve essere una soluzione. :\
Io sto facendo vari test per riuscire a killare i processi figli singoli del ntvdm.exe ma non riesco in alcun modo :(
P.S. grazie delle "dritte". In effetti sto scoprendo come l'ntvdm sia una macchina virtuale dos dove far eseguire i programmi a 16 bit. Deve esserci il modo per killare un singolo processo all'interno.
grazie di ulteriori aiuti ^^
Nicodemo Timoteo Taddeo
22-07-2011, 18:16
Direi che se proprio vuoi tentare la via della riga di comando potresti provare a vedere che cosa può fare pskill:
http://technet.microsoft.com/en-us/sysinternals/bb896683
Oppure ci sarebbe la power shell installabile anche su XP, ma in tutta franchezza non so se get-process o stop-process sanno visualizzare o agire su quel genere di processi.
Se con get-process riesci a vedere elencato datacom,
si può tentare uno stop-process -name datacom
Mi piacerebbe tantissimo provare, ma non più programmi a 16 bit che creano quella situazione lì.
Saluti.
tallines
22-07-2011, 21:26
In che senso? Io non devo rimuovere il file permanentemente ma solo killarlo quando voglio io.
Se è come dice Nicodemo Timoteo Taddeo che saluto, cioè che gira a 16 bit, non saprei come aiutarti, credevo che fosse a 32 .
Oltre a non avere nessun PID come ha detto Nicodemo, osservando l'immagine da te postata, non ci sono neanche i kb di utilizzo .
Ma scusa la domanda perchè vuoi killare un singolo processo all'interno della macchina virtuale dos a 16 bit ?
Ora proverò pskill e vi farò sapere.
Ne ho bisogno perchè devo killare il processo su un pc remoto da cui non posso accedere via controllo remoto. Questo perchè il datacom devo aprirlo su un altro pc e non si può avviare su due pc contemporaneamente poichè sfruttano la stessa com. E un pò complicato ma prendetelo per buono =). Taskkill mi permette il kill in remoto in un pc che sia nel mio stesso gruppo di lavoro.
Comunque proverò e vi farò sapere ^^
Niente da fare. Ho provato ma nemmeno pskill ne vuol sapere di killare i processi a 16 bit.. :cry:
UP: Forse ho trovato qualcosa.. ma si entra in campo programmazione =) http://support.microsoft.com/default.aspx?scid=KB;en-us;q105676
"One way to terminate an individual 16-bit Windows-based application is to enumerate the desktop windows using EnumWindows(), determine which is the correct window, obtain the thread ID with GetWindowThreadProcessId(), and post a WM_QUIT message via PostThreadMessage() to terminate the application.
Another way to terminate an individual 16-bit Windows-based application is to use the TOOLHELP APIs. Use TaskFirst() and TaskNext() to enumerate the tasks, determine which is the correct task, and call TerminateApp() to kill the application. The Windows SDK sample THSAMPLE demonstrates how this can be done. "
ReUP: Inoltre ho trovato tramite "Process Explorer" l'handle del datacom.exe.. magari si potrebbe richiamare una funzione per chiudere l'handle. Mah
http://img27.imageshack.us/img27/9738/handledatacom.jpg
In base a come va il thread mi sposterò in area programmazione.. comunque accetto ulteriori suggerimenti ^^
Thread spostato in Programmazione data l'evoluzione dello stesso.
Già è meglio in programmazione dato che sia pskill e taskkill non sono adatti alla risoluzione di un problema del genere.
Quindi vi chiedo. Qualcuno ha provato a chiudere processi con le funzioni riportate nel precedente post?
Grazie in anticipo ^^
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.