View Full Version : [JAVA] Eseguire un programma con un altro username
Ho la necessità di creare una classe che sia in grado di eseguire un programma (es notepad.exe) utilizzando determinati username e password.
Esiste la funzione "CreateProcessWithLogonW" (contenuta nella dll di windows "Advapi32") che permette di fare ciò, ma in java non so come fare.
Qualche suggerimento?
tanto cmq nella maggior parte dei casi non puoi usare neanche CreateProcessWithLogonW visto che l'account sotto il quale la chiami dovrebbe avere il permesso della policy di "agire come parte del sistema operativo" :rolleyes:
puoi scrivere una funzioncina (in C/C++) che fa da wrapper a quella del sistema operativo, ferme restando le limitazioni che ha menzionato 71104, e richiamarla tramite JNI.
o ancora (anche se più rozzo) puoi scrivere un piccolo programma che chiama quella funzione e richiamarlo dal programma java
tanto cmq nella maggior parte dei casi non puoi usare neanche CreateProcessWithLogonW visto che l'account sotto il quale la chiami dovrebbe avere il permesso della policy di "agire come parte del sistema operativo" :rolleyes:
Non ho ben capito. Cmq se facessi eseguire il programma con i diritti di administrator ci sarebbero lo stesso dei problemi?
puoi scrivere una funzioncina (in C/C++) che fa da wrapper a quella del sistema operativo, ferme restando le limitazioni che ha menzionato 71104, e richiamarla tramite JNI.
o ancora (anche se più rozzo) puoi scrivere un piccolo programma che chiama quella funzione e richiamarlo dal programma java
Qui andiamo sul complicato :muro:
Pensavo che in java esistesse qualche classe che permettesse di fare ciò.
Ho provato a fare un programmino in Visual FoxPro (sono uno dei pochi che in Italia lo usa) che utilizza il CreateProcessWithLogonW e funziona correttamente, ma permangono alcuni problemi per quanto riguarda le applicazioni sui dischi di rete:
_Non è possibile utilizzare la lettere del driver (es E:\file.exe) ma occorre usare l'UNC
_Una volta lanciata l'applicazione non vengono visti i dischi di rete collegati al pc
_Non è possibile utilizzare le stampanti di rete (errore nel caricare il driver)
Ho provata anche ad usare programmi già fatti (alcuni anche a pagamento) che permetto di eseguire applicazioni con un altro utente e psw ma riscontro sempre le stesse limitazioni.
Possibile che alla microsoft non hanno pensato a questa cosa? :(
Ciao e grazie :D
Non ho ben capito. Cmq se facessi eseguire il programma con i diritti di administrator ci sarebbero lo stesso dei problemi?che io sappia nella maggior parte dei casi si: CreateProcessWithLogonW è un modo più comodo per eseguire LogonUser e CreateProcessAsUser, le quali funzionano solo se la policy da il permesso all'account di "agire come parte del sistema operativo" (normalmente solo SYSTEM dispone di questo privilegio, quindi solo i servizi possono chiamarla con successo).
Ho provato a fare un programmino in Visual FoxPro (sono uno dei pochi che in Italia lo usa) che utilizza il CreateProcessWithLogonW e funziona correttamente sicuro che funzioni? evidentemente l'account dal quale la chiami ha il permesso necessario...
ma permangono alcuni problemi per quanto riguarda le applicazioni sui dischi di rete:
_Non è possibile utilizzare la lettere del driver (es E:\file.exe) ma occorre usare l'UNC
_Una volta lanciata l'applicazione non vengono visti i dischi di rete collegati al pc
_Non è possibile utilizzare le stampanti di rete (errore nel caricare il driver) secondo me si tratta solo di una questione di permessi: prova a controllare che l'account sotto il quale gira il nuovo processo abbia la possibilità di accedere ai path che hai provato...
Ho provata anche ad usare programmi già fatti (alcuni anche a pagamento) che permetto di eseguire applicazioni con un altro utente e psw ma riscontro sempre le stesse limitazioni.
Possibile che alla microsoft non hanno pensato a questa cosa? :( allora credo proprio che l'account dal quale chiami CreateProcessWithLogonW abbia dalla policy il permesso sopra citato, ma gli account sotto i quali hai creato i nuovi processi non hanno la possibilità di accedere ai tuoi dischi e stampanti di rete, ecc. (l'errore nel caricamento del driver mi sembra strano... le stampanti di rete almeno in locale funzionano?)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.