Abhebung eines ProcessBuilder Prozess über die Benutzerkontensteuerung?

Ich versuche zu laufen, eine externe ausführbare Datei, aber anscheinend braucht es Höhe. Der code ist, modifiziert aus einem Beispiel mit ProcessBuilder (daher das array mit einem argument) :

    public static void main(String[] args) throws IOException {
        File demo = new File("C:\\xyzwsdemo");
        if(!demo.exists()) demo.mkdirs();
        String[] command = {"C:\\fakepath\\bsdiff4.3-win32\\bspatch.exe"};
        ProcessBuilder pb = new ProcessBuilder( command );
        Process process = pb.start();
        InputStream is = process.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String line;
        System.out.printf("Output of running %s is:\n", Arrays.toString(command));
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        try {
            int exitValue = process.waitFor();
            System.out.println("\n\nExit Value is " + exitValue);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

Gibt es diese bei der Ausführung:

Exception in thread "main" java.io.IOException: Cannot run program "C:\Users\Gilliane\Downloads\bsdiff4.3-win32\bspatch.exe": CreateProcess error=740, The requested operation requires elevation

Ich habe einige surfen rund um und wissen, dass in C# können Sie verlangen, Höhe von, dies zu tun, (wie man aus dieser thread):

startInfo.Verb = "runas";

Aber ich sehe nichts wie das mit ProcessBuilder. Eine andere Methode wäre es, die Elevation Tools auf dem Zielsystem installiert werden, und zum aufrufen des "elevate" - prompt mit ProcessBuilder. Allerdings würde ich das eher nicht die Kraft der Menschen, die mit meinem Programm zu installieren auch diese Erhöhung tools.

Gibt es einen anderen Weg?

Schreibe einen Kommentar