Newsgroup: it.comp.programmare.win32
Titolo: Impostare privilegi a un processo

Ho bisogno di impostare il massimo dei privilegi (e priorità) a un
processo...Come posso fare? Non devo impostarlo come servizio...

 processo...Come posso fare? Non devo impostarlo come servizio...
è un controsenso, comunque devi regolare al massimo quelli dell'account su
cui gira.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 cui gira.
Esiste un modo tramite API o devo per forza svilupparlo come servizio?

Esiste un modo tramite API o devo per forza svilupparlo come servizio?
Dipende da cosa ti serve .
Chiaro che se usi un account user certi privilegi non potrai mai
averli come pure non riuscirai mai ad accedere a cartelle protette
nelle quali non hai i giusti permessi.

ombra ha scritto:

Devo stoppare un servizio...Per far questo serve il massimo dei
privilegi (cosa che evidentemente non ho, mi pare strano dato che con
altri servizi funziona)...

 nelle quali non hai i giusti permessi.
qualsiasi account può accedere a qualsiasi cosa se gli è concesso.


 altri servizi funziona)...
GetLastError cosa ritorna? 5?


 GetLastError cosa ritorna? 5?
No ritorna 997...Si in teoria dovrei impostare il massimo delle policy,
credo sia l'unico modo...In ogni caso l'utente ha i diritti perchè dal
task riesco a chiuderlo il programma...

 task riesco a chiuderlo il programma...
lascia perdere il Task Manager di Windows, che in questo caso non è adatto
come punto di riferimento (usa API non documentate)


 per caso il tuo servizio è un driver?
No non è un driver, è ZoneAlarm (il firewall)...

 No non è un driver, è ZoneAlarm (il firewall)...
che usa un driver :)
però quello che pensavo io non c'entra nulla, il firewall per motivi di
sicurezza si sarà giustamente configurato in maniera tale da non farsi
scaricare tanto facilmente...
mi spiace ma non so aiutarti, posso solo dirti che da me il TrueVector non
è l'unico servizio che non posso stoppare o avviare...


 che usa un driver :)
Ti posso chiedere cosa intendi per driver?  Perchè chiaramente non
sarà la stessa cosa ad esempio del driver video, ma sinceramente non
ho proprio idea di come funzioni questo firewall...

ho proprio idea di come funzioni questo firewall...
Probabilmente dietro al firewall c'e' un servizio che lo
avvia\gestisce .
Dato che i servizi vengono avviati come SYSTEM godono  di particolari
privilegi e permessi , che il tuo programma se gira come USER non 
puo avere -

 ho proprio idea di come funzioni questo firewall...
un driver è un programma che gira in kernel mode nel contesto del processo
del kernel (che è il processo "System" che su Windows 2000 e XP ha PID =
8) ma anche nel contesto di un thread arbitrario.
tutti i drivers per Windows (salvo backward compatibility) devono
rispettare il modello corrente di programmazione dei drivers, che si
chiama WDM (Windows Driver Model); il WDM prevede l'esistenza di tre tipi
di drivers:
- physical
- function
- filter
il primo è un tipo di driver adibito all'interazione diretta con la
periferica hardware, e intendo proprio a livello di istruzioni assembly IN
e OUT, di manipolazione dei registri specifici, accesso alle ranges di
memoria dedicate alla periferica, e installazione e gestione delle
interrupt richieste dalla periferica.
il secondo è un tipo di driver adibito alla gestione della logica di
funzionamento della periferica nonché all'esposizione di un'interfaccia
well-documented verso i componenti del kernel che useranno tale periferica.
in un'altra terminologia physical e function vengono anche chiamati port e
class (rispettivamente).
infine il terzo è un tipo di driver opzionale che può collocarsi a livelli
differenti della comunicazione tra class e port drivers, e se ne possono
anche collocare più d'uno; servono semplicemente ad intercettare la
comunicazione tra i class e i port per i fini più svariati (monitoraggio,
aggiunta di funzionalità, eccetera).
per completare il quadro aggiungi anche che grazie alla grande
flessibilità di tutto il modello è possibile creare degli stack di drivers
che non siano costituiti semplicemente da un class e un port subito sotto,
magari con un filter in mezzo, ma da combinazioni anche più complesse di
class e port alternati (con tutti i filtri che ti pare, e relative perdite
di performance :P) che permettono al WDM di rappresentare situazioni
hardware di periferiche connesse tramite altre periferiche.
esempio pratico: joystick connesso ad una porta USB di un replicatore USB
connesso a sua volta alla USB di un hub che si attacca sulla scheda madre
tramite qualche altro tipo di bus, diciamo per es. PCI. ebbene, il WDM
permette anche di rappresentare una situazione simile :)
l'architettura dei drivers di rete è una cosa un po' a parte, si basa
sullo stack TCP/IP da quel poc(hissim)o che ne so, comunque i concetti
sono del tutto simili. un personal firewall come ZA utilizza un driver di
rete (installato a non so quale livello) per intercettare ed eventualmente
bloccare i pacchetti che viaggiano.
un driver insomma per definizione è solamente un programma che gira in
kernel mode; un personal firewall ne ha bisogno perché in user mode non è
possibile intercettare e bloccare tutto il traffico di rete; se ne può
intercettare e bloccare solo una parte, e lo si può fare solamente con
metodi decisamente "sporchi" (proxy DLL... bleah) quindi scrivere un
network driver per realizzare un personal firewall è decisamente la cosa
migliore.


 puo avere -
in teoria si, ma si farebbe solo del male



che è l'NDIS Intermediate


 che è l'NDIS Intermediate
Ed è possibile interagire con questo livello?

 Ed è possibile interagire con questo livello?
1) non è detto che il driver di ZA sia a quel livello
2) che intendi con "interagire"? conoscere il funzionamento di un NDIS
Intermediate Driver non ti servirà a scaricarlo, devi per forza stoppare
il servizio. o meglio, questa è la maniera più ortodossa di agire... ^^


 il servizio. o meglio, questa è la maniera più ortodossa di agire... ^^
Purtroppo ho già provato a stopparlo ma mi dà l'errore che tu hai
già decodificato...

 già decodificato...
ma lo ben so; il problema qui è semplicemente di tipo concettuale: ti
tocca scoprire in che assetto di sicurezza si trova il servizio usato da
ZA e capire di preciso il motivo percui l'account utente non ha la
possibilità di stopparlo, quale permesso ti è negato e invece ti
servirebbe; una volta che hai queste informazioni devi modificare i
permessi necessari ad accedere al servizio, cosa che sicuramente il tuo
account utente può fare (visto che con lo stesso account sei riuscito
quantomeno ad avviarlo). io comincerei col capire di che tipo di servizio
si tratta, a parte il fatto che è sicuramente un driver: si tratta di un
servizio installato come "boot start", "system start", "demand start"...?


 servizio installato come "boot start", "system start", "demand start"...?
Esiste un metodo per scoprirlo? A rigor di logica dovrebbe essere un
boot start, ma sono solo supposizioni...

 boot start, ma sono solo supposizioni...
OpenService, QueryServiceConfig
