Vista의 관리자 권한으로 Java 런타임 프로세스를 시작하십시오
-
07-07-2019 - |
문제
Java 1.6과 함께 Vista에 소프트웨어를 설치하는 Setup.exe 설치 프로그램을 실행하고 싶습니다.
사용자는 관리자가 아닙니다. 프로세스를 시작하려고하면 오류 메시지가 나타납니다.
CreateProcess error=740
이는 사용자가 프로세스를 시작할 권한이 충분하지 않음을 나타냅니다.
깃발이나 옵션을 제출할 수있는 옵션을 제출할 수 있습니까? Vista 자체는 메뉴 도구 모음 내에이 기능이 있습니다. 이 기능을 Java에서 사용할 수 있습니까?
다음 코드를 호출합니다
Runtime rt = Runtime.getRuntime();
Process process;
try {
String fileToExecute = new File(mFolder, mSetupFiles[0]).getCanonicalPath();
if (logger.isDebugEnabled()) {
logger.debug("Execute runtime process");
}
process = rt.exec(fileToExecute, null, mFolder);
process.getErrorStream().close();
process.getInputStream().close();
process.getOutputStream().close();
if (logger.isDebugEnabled()) {
logger.debug("Wait until process is finished");
}
process.waitFor();
} catch (IOException e) {
throw new StartException(e);
} catch (InterruptedException e) {
throw new StartException(e);
}
해결책 2
2 일의 테스트 후 다음 솔루션을 찾았습니다.
Vista UAC 기능이 활성화되면 오류가 발생합니다. UAC는 프로세스에 관리자 권한이 필요한 경우 매번 질문 대화 상자를 보여줍니다.
이 대화 상자를 표시하면 문제가 발생합니다.
오래된 것을 사용하는 대신
process = rt.exec(fileToExecute, null, mFolder);
명령, 이제 새로운 1.5를 사용하고 있습니다 ProcessBuilder 명령
편집하다:
문제를 피하려면 권한을 요청하는 명령 창을 열어야합니다. 그리고 당신이 외부 프로세스를 호출 해야하는 것보다.
ProcessBuilder builder = new ProcessBuilder(new String[] { "cmd.exe", "/C", fileToExecute });
여기에 설명되어 있습니다 외부 프로그램을 실행하십시오
제휴하지 않습니다 StackOverflow