Java: executar como administrador

Existe uma maneira em Java para pedir ao sistema para obter controle sobre a funcionalidade do administrador. Claro que sem fazer: Clique com o botão direito no exe -> run como admin.
O que eu quero é que chegue um quadro do UAC como no Windows Vista ou no Windows 7.

Ou eu tenho que fazer algumas configurações ao fazer um exe do jarro?

Você precisa criar um arquivo de manifesto que especifique que seu aplicativo precisa de permissions de administrador. Você pode include o manifesto no seu exe ou mantê-lo como um arquivo separado (yourapp.exe.manifest)

http://msdn.microsoft.com/pt-br/library/bb756929.aspx

A maneira mais fácil seria usar um wrapper para ativar sua JVM e, em seguida, elevar o wrapper. Eu uso um simples script de instalação NSIS com o plugin UAC para fazer isso:

; Java Launcher ;-------------- ; You want to change the below lines Name "my program" Caption "my program Launcher" Icon "iconfile.ico" OutFile "java launcher.exe" ; param below can be user, admin RequestExecutionLevel admin !include UAC.nsh SilentInstall silent AutoCloseWindow true ShowInstDetails show Section "" ; command to execute StrCpy $0 'javaw -jar myjarfile' SetOutPath $EXEDIR Exec $0 SectionEnd 

Resposta ZippyV é bom se você pretende iniciar o javaw.exe com privilégios de administrador do sistema, que se código java puro é o que está ficando bloqueado pelo UAC (como tentar gravar um arquivo para um diretório privilegiado), então é isso que você precisará fazer.

Se, no entanto, você estiver tentando iniciar algo externo, mas apenas com elevação, poderá agrupar um exe que eleve um comando. Aqui está um .

Você pode usar um programa do Windows para elevar seu privilégio. O programa mostrará o prompt do UAC e, em seguida, você terá privilégios de administrador.

http://jpassing.com/10//08/launch-elevated-processes-from-the-command-line/

Você pode então correr para o comando assim:

 Runtime.getRuntime().exec("Elevate.exe yourcommand"); 

Se você pode executar o que você precisa para executar a partir de um arquivo em lotes CMD do Windows .. Você pode criar um arquivo em lotes (on the fly mesmo) de dentro de seu aplicativo java que faz o que você quer e lançá-lo. Eu tenho que trabalhar para o meu programa java lança isso e ele aparece o prompt normal do Windows UAC para o usuário e, em seguida, executa os comandos se escolher SIM.

  String[] commands = {"cmd.exe", "/C" "mybatchfile.bat"}; ProcessBuilder pb = new ProcessBuilder(commands); .. pb.start(); 

Aqui está um segmento que lida com a solicitação de access ao UAC dentro de um arquivo de lote do Windows: Como solicitar access de administrador dentro de um arquivo de lote

NOTA: O ProcessBuilder pode ser um pouco complicado de se lidar, usando um StreamGobbler para lidar com os trabalhos de saída para mim: manipular input usando o StreamGobbler

Eu uso a linha de comando no windows para esse propósito. No menu Iniciar, digite cmd na checkbox de texto e, quando o programa cmd.exe aparecer, clique com o botão direito e selecione Executar como administrador. Agora, quando você executar java -jar ele será executado com direitos de administrador.

Vou explicar como você consegue aplicação java elevada

 import java.io.IOException; public class RunAsAdminExample { public static void main(String[] args) throws IOException { Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process  -verb RunAs"); } } 

program.exe é exemplo apenas chamar notepad.exe

 import java.io.IOException; public class RunAsAdminExample { public static void main(String[] args) throws IOException { Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process notepad.exe -verb RunAs"); } } 

Do que você tem programa elevado. Eu recomendo você – Você precisa converter em invólucro binário como Launch4j ou Parcle Do que você pode clicar – Se você criar um instalador personalizado (feito por Java Swing ou Awt.)

Espero que você tenha uma boa solução 🙂 – Se você usa Linux ou Mac OS X, você precisa usar o wrapper binário do Parcle ou outro wrapper se você souber …

// EDITAR boa ideia de Kaptkaos Do que você escreve simples:

 import java.io.IOException; public class RunAsAdminExample { public static void main(String[] args) throws IOException { Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process -FilePath java.exe -Argument '-jar runasadmin.jar' -verb RunAs"); } } 

Não esqueça de usar '' e "" se -jar .jar de -Argument of Start-Process. Nota não se esqueça – Se você usar o diretório de trabalho e arquivo jar deve estar no exemplo de diretório de trabalho

  • \ myjar.jar
  • java. \ RunAsAdminExample.class

Do que você pode ver java elevada com argumento 🙂

Cumprimentos!

Acesse java.exe e javaw.exe dentro da pasta de instalação. ie – C: \ Arquivos de Programas \ Java \ jre7 \ bin ou C: \ Arquivos de Programas \ Java \ jdk1.7.0_17 \ bin clique sobre eles e selecione propriedades-> compatibilidade e lá: marque “executar este programa como administrador”.