4

java1.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);
        }
4

2 に答える 2

3

(私はこれを試していません)が、ここから「昇格」プログラムを使用してこれを行うことができるようです

UACの概要についてもこれを読んでください

于 2009-09-14T12:02:01.913 に答える
2

2日間のテストの後、次の解決策が見つかりました。

Vista UAC機能がアクティブになると、エラーが発生します。プロセスに管理者権限が必要な場合、UACは毎回質問ダイアログを表示します。

このダイアログを表示すると問題が発生します。

古いものを使用する代わりに

process = rt.exec(fileToExecute, null, mFolder);

コマンド、私は今新しい1.5ProcessBuilderコマンドを使用しています

編集:

この問題を回避するには、許可を要求するコマンドウィンドウを開く必要があります。そして、外部プロセスを呼び出す必要があります。

ProcessBuilder builder = new ProcessBuilder(new String[] { "cmd.exe", "/C", fileToExecute });

ここでも説明します外部プログラムを実行します

于 2009-09-15T08:18:07.193 に答える