Domanda

I avrà un servizio che viene eseguito come amministratore e ascolti su una porta. Il mio programma GUI parlare con il servizio di amministratore per le voci che richiedono privilegi di amministratore.

Se il servizio non è ancora in esecuzione, ho bisogno di avviarlo. Come posso ottenere il mio programma GUI per eseguire un comando come amministratore? Suppongo che l'utente verrà chiesto se vogliono continuare.

Mi auguro che c'è qualcosa che potrei digitare in una finestra CMD perché che dovrebbe adattarsi molto bene nel mio programma Java. Sto pensando qualcosa di simile run-as-admin javaw my-service.jar dove run-as-admin è il comando che chiede se continuare o meno.

È stato utile?

Soluzione

Non è possibile eseguire un file batch come amministratore. È necessario creare un collegamento a tale file e quindi impostare il flag nel collegamento 'Esegui come amministratore', se questo è davvero ciò che si vuole fare.

Per fare questo dal desktop, selezionare il collegamento, fare clic destro e Proprietà-> Shortcut tabulazioni> pulsante Avanzate. Poi controlla Esegui come amministratore casella di controllo.

Per fare questo codice, vedere come impostare 'Esegui come amministratore' bandiera sul collegamento creato da MSI installer

Altri suggerimenti

Windows contiene funzione "runas", che possono essere utilizzati per avviare qualsiasi eseguibile con un account utente diverso.

Sulla linea di comando si dovrebbe quindi utilizzare:

runas /user:Administrator "javaw -jar my-service.jar"

L'unico svantaggio è che è necessario digitare la password, non è possibile specificare la password come argomento per il comando runas

Usiamo la libreria wrapper per questo: http://sourceforge.net/projects/wrapper/

Il href="http://wrapper.tanukisoftware.com/" rel="nofollow"> sito sembra soffrire di problemi di DNS dinamico al momento, ecco la Wayback versione di archivio .

Dalla riga di comando (e per estensione, Java) è possibile installare, disinstallare, avviare, e fermare l'applicazione Java come un servizio.

Hai un problema qui. I processi non di amministratore non può avviare i servizi. La cosa più semplice da fare è fare in modo che il servizio viene avviato automaticamente. Mi consiglia vivamente di prendere questa strada.

Che cosa stai pensando di fare comporterebbe la creazione di un'applicazione di supporto che include il UAC manifesta con requestedExecutionLevel set per requireAdministrator. Questa applicazione helper potrebbe quindi avviare il servizio. Il problema di questo è che richiede che l'utente connesso è nel gruppo di amministratori che non può garantire sarà il caso.

Tutto sommato, l'avvio del servizio automatico è da preferire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top