문제

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 });

여기에 설명되어 있습니다 외부 프로그램을 실행하십시오

다른 팁

(나는 이것을 시도하지 않았지만, 당신은 당신이 "elvate"프로그램을 사용하여 이것을 할 수있는 것 같습니다. 여기

또한 읽습니다 이것 UAC 개요의 경우

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top