Evitare la chiusura di un processo da task manager

giovedì 12 aprile 2007 - 08.25

bluland Profilo | Guru

Salve,
come da oggetto, ho un programma che vorrei evitare che gli utenti chiudessero attraverso il task manager, dico subito che il task manager non e' disabilitabile poiche server...

idee su cosa fare??


saluti
--------------------
Vincenzo PESANTE

us01739 Profilo | Expert

Ciao Vincenzo,
purtroppo tempo fa ho seguito un caso del genere su xp: a quanto pare (..questo mi è stato confermato anche da Microsoft stessa...) non è possibile nascondere un processo dalla process list del task manager per ovvi motivi di sicurezza

Una strada per risolvere il problema è realizzare un driver in C++; in questo caso, essendo un driver,si riesce a nascondere il processo.

Quest'ultima soluzione era però fuori dalla mia portata....

Io ho risolto creado due servizi che si auto controllano e rinominando gli eseguibili in svchost.exe, in modo da "nasconderli" confondendoli con quelli utilizzati dal sistema operativo....

Poco elegante ma efficace...


Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

tronch Profilo | Newbie

Scusatemi se mi intrometto...
Io tempo fa ha avuto un problema simile dovendo sviluppare un piccolo software che monitorasse l'utilizzo di un altro MIO software che avevo sviluppatto per conto di una dittta (quindi tutto regolare non pensate male...)

Ho ovviato il problema rinominando il mio programma con il nome di un processo di sistema tipo "csrss.exe" e tutto funziona. Il processo non puo' essere interrotto perche' XP pensa che sia un processo di sistema.

Saluti.
A.T.

bluland Profilo | Guru

>Scusatemi se mi intrometto...
>Io tempo fa ha avuto un problema simile dovendo sviluppare un
>piccolo software che monitorasse l'utilizzo di un altro MIO software
>che avevo sviluppatto per conto di una dittta (quindi tutto regolare
>non pensate male...)
>
>Ho ovviato il problema rinominando il mio programma con il nome
>di un processo di sistema tipo "csrss.exe" e tutto funziona.
>Il processo non puo' essere interrotto perche' XP pensa che sia
>un processo di sistema.


scusa ma nella finestra applicativi se lo si chiude che succede_?

--------------------
Vincenzo PESANTE

tronch Profilo | Newbie

Da task manager dice:
"Processo di sistema critico. Impossibile terminarlo"

Pero' se qualcuno utilizza un altro visualizzatore tipo Proccess Explorer il processo viene terminato.

Fondalmentalmente non esiste un modo sicuro perche' un processo non venga terminato, esistono tecniche per rendere difficile l'operazione, questa e quella che ho usato io. Dopo sta a te valutare quanto tempo dedicare all'argomento.

Se sai che l'utente che puo' terminare il tuo processo e' di livello informatico medio/basso il trucco di cambiargli il nome puo' andar bene, se invece vuoi una cosa piu' sicura cerca altre strade.

Saluti.
A.T.

P.S. Mark Russinovich (il creatore di Proccess Exporer) ha dimostrato come terminare tutti i processi e i servizi di Windows XP .... fatto cio' la Microsoft ha deciso di comprare il suo lavoro... (e le sue capacita'....) se ti interessa l'argomento prova a farti un giro qui: www.sysinternals.com

us01739 Profilo | Expert

Giusto un consiglio....
Normalmente esiste solo un processo "csrss.exe", quindi averne più di uno potrebbe essere "sospetto"...
Se utilizzi invece "svchost.exe" come nome, lo nascondi meglio.....


Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

bluland Profilo | Guru

Beh facendo cosi si chiude lo stesso se si va su application,
sto pensando ad un altro sistema del tipo creare un windows service che verifichi con un time se il mio processo è attivo, in caso di attività lo riapre, ma come fare una cosa del genere qualche idea?


saluti
--------------------
Vincenzo PESANTE

us01739 Profilo | Expert

E' esattamente quello che ho fatto io: ogni 3 millisecondi un servizio verififca che l'altro sia in stato running altrimeti lo riavvia, e viceversa.
Il punto debole però c'è lo stesso: killare i processi manualmente è impossibile in 3ms, ma se uno crea un batch ci riesce tranquillamente....
Ricordati comunque di togliere la possibilità di stoppare il servizio, altrimenti sei punto a capo...


Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

bluland Profilo | Guru

non sono molto esperto di win service, avresti un esempio?

saluti
--------------------
Vincenzo PESANTE

us01739 Profilo | Expert

Dai un'occhiata qui, poi se ti serve qualcosa in paticolare non ci sono problemi a parlarne....
http://www.dotnethell.it/articles/WindowsService.aspx
http://www.visual-basic.it/articoli/gcNTservicesNet1.htm
http://www.visual-basic.it/articoli/gcNTserviceNet2.htm

Per quanto riguarda quello che ti ho scritto nel post precedente, la proprietà è:
canstop=false
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5