관리자 기능을 제어 할 수있는 시스템을 Java에 요청하는 방법이 있습니까? 물론 수행하지 않고 : exe -> admin으로 마우스 오른쪽 버튼을 클릭하십시오.
내가 원하는 것은 Windows Vista 나 Windows 7과 같은 UAC의 프레임이 있다는 것입니다.Java : 관리자 권한으로 실행
아니면 jar에서 exe를 만드는 동안 몇 가지 설정을해야합니까?
관리자 기능을 제어 할 수있는 시스템을 Java에 요청하는 방법이 있습니까? 물론 수행하지 않고 : exe -> admin으로 마우스 오른쪽 버튼을 클릭하십시오.
내가 원하는 것은 Windows Vista 나 Windows 7과 같은 UAC의 프레임이 있다는 것입니다.Java : 관리자 권한으로 실행
아니면 jar에서 exe를 만드는 동안 몇 가지 설정을해야합니까?
응용 프로그램에 관리자 권한이 필요하다는 것을 지정하는 매니페스트 파일을 만들어야합니다. 당신은 당신의 EXE 파일에 매니페스트를 포함하거나 별도의 파일로 유지할 수 있습니다 (yourapp.exe.manifest)
는 시스템 관리자 권한을 가진 javaw.exe가를 시작하려는 경우 ZippyV의 대답은 괜찮이다 순수 Java 코드가 UAC에 의해 차단되는 경우 (예 : 권한이 부여 된 디렉토리에 파일을 쓰려고 시도하는 경우), 그렇게해야합니다.
그러나 외부에서 무언가를 시작하려는 경우 권한 상승으로 명령을 수행하는 exe를 번들로 묶을 수 있습니다. Here is one.
감사! 일반적으로 사용자 응용 프로그램이 관리자 권한으로 실행되는 것을 원하지 않으므로 대부분의 경우 더 적절한 해결책 일 수 있습니다. Elevate.exe에는 대기중인 명령이있을 때까지 차단할 수 있도록 대기 옵션이 있습니다. – rob
링크를 올바르게 읽으면 항상 옵션이 아닌 레지스트리를 수정해야합니다. – likejiujitsu
Windows 프로그램을 사용하여 권한을 상승시킬 수 있습니다. 프로그램은 UAC 프롬프트를 표시하고 관리자 권한을가집니다.
http://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/
당신은 다음과 같은 명령을 실행 할 수 있습니다
Runtime.getRuntime().exec("Elevate.exe yourcommand");
가장 쉬운 방법은 다음, 당신의 JVM을 시작하는 래퍼를 사용하는 래퍼를 상승하는 것입니다. UAC 플러그인을 사용하여 간단한 NSIS 설치 스크립트를 사용하여 다음 작업을 수행합니다.
; 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
이 목적으로 Windows에서 명령 줄을 사용합니다. 시작 메뉴에서 cmd을 입력하고 프로그램 cmd.exe이 나타나면 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택하십시오. 이제 실행하면 java -jar 관리자 권한으로 실행됩니다.
그것은 나를위한 작품, 아주 간단한 솔루션 덕분에 –
설치 폴더 내의 java.exe 및 javaw.exe에 액세스하십시오. ie - C : \ Program Files \ Java \ jre7 \ bin 또는 C : \ Program Files \ Java \ jdk1.7.0_17 \ bin 을 클릭하고 속성 -> 호환성을 선택하십시오 : "이 프로그램을 다음과 같이 실행하십시오. 관리자".
그것은 모든 Java 프로그램 관리자 권한을 제공하므로 이것은 정말 나쁜 생각입니다. 맬웨어는 방금 키를 넘겨 줬기 때문에 시스템을 설치하기 위해 Java 구현의 보안 허점을 이용할 필요조차 없습니다. –
Windows CMD 배치 파일에서 실행해야하는 모든 것을 실행할 수 있다면 ... Java 응용 프로그램 내에서 배치 파일을 원하는대로 실행하고 실행할 수 있습니다. Java 프로그램을 실행하여 정상적인 창 UAC 프롬프트를 표시 한 다음 YES를 선택하면 명령을 실행합니다. 이 How to request Administrator access inside a batch file
참고 : ProcessBuilder를 출력 작업을 처리하는 StreamGobbler을 사용하여 처리 할 조금 까다로울 수있다 여기에
String[] commands = {"cmd.exe", "/C" "mybatchfile.bat"};
ProcessBuilder pb = new ProcessBuilder(commands);
..
pb.start();
는 윈도우 배치 파일 내에서 UAC 액세스를 요청 다루는 스레드 나를 위해 :
Handle Input using StreamGobbler
난 당신이 높은 자바 응용 프로그램을 얻는 방법을 설명 할 것이다
import java.io.IOException;
public class RunAsAdminExample {
public static void main(String[] args) throws IOException {
Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process <program.exe> -verb RunAs");
}
}
은 Program.exe 예를 그냥 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");
}
}
를 호출합니다. 나는 당신을 운영자 추천 - 당신은 클릭 할 수있는 것보다 Launch4j 또는 Parcle 같은 바이너리 래퍼로 변환해야합니다 - (. 자바 스윙 또는 AWT에 의해) 사용자 지정 설치 프로그램을 만드는 경우
난 당신이 좋은 솔루션 :이 희망 - 당신이 만약 당신은 간단하게 쓰기보다 Kaptkaos 에 의해 ...
// EDIT 좋은 생각이 Parcle 진 래퍼 또는 당신이 알고있는 경우에 다른 래퍼를 사용하여 필요한 것보다 리눅스 또는 Mac OS의 X를 사용
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");
}
}
을하는 것을 잊지 마세요 Start-Process의 -Argument에서 -jar .jar을 사용하면 ''및 ""을 사용하십시오. 참고 잊지 마세요 - 당신이 디렉토리와 항아리 파일을 작업 사용하는 경우 디렉토리 예 작업에 있어야합니다 \ myjar.jar 자바 \ RunAsAdminExample.class 당신이 인수와 함께 높은 자바를 볼 수 있습니다보다 :)
안부를..!
물론 "실행 파일"은 사용자 코드가 아닌 JVM이됩니다. 매니페스트는 JVM에 적용되므로 해당 JVM에서 실행되는 모든 항목에 적용됩니다. – MSalters
java를 실행하는 래퍼 exe를 가지고 있다면 어떨까요? 관리자 액세스 권한은 하위 프로세스 (jvm)에 의해 상속됩니까? – Cal
@Cal - 예 - 프로세스가 승격되면 모든 프로세스가 생성됩니다. UAC 권한 상승은 응용 프로그램이 실행중인 사용자를 말 그대로 바꿔줍니다. 단방향 경로이므로 승격 할 수는 있지만 뒤로 물러 설 수는 없습니다. –