Tôi đang cố chạy một tệp thực thi bên ngoài, nhưng dường như nó cần độ cao. Mã này là thế này, biến đổi từ một ví dụ của việc sử dụng ProcessBuilder (do đó mảng với một đối số):Nâng cao quy trình ProcessBuilder qua UAC?
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();
}
}
Nó trả về này khi chạy:
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
tôi đã thực hiện một số trình duyệt xung quanh, và biết rằng trong C#, bạn có thể yêu cầu độ cao bằng cách làm này, (khi nhìn từ this thread):
startInfo.Verb = "runas";
Tuy nhiên, tôi không thấy bất cứ điều gì như thế với ProcessBuilder. Một phương pháp khác là cài đặt Elevation Tools trên hệ thống đích và gọi lời nhắc "nâng cao" bằng ProcessBuilder. Tuy nhiên, tôi không muốn ép buộc những người sử dụng chương trình của tôi cũng cài đặt những công cụ nâng cao đó.
Có cách nào khác không?
Cảm ơn bạn đã trả lời nhanh chóng! Tôi sẽ kiểm tra điều này trong phạm vi đơn đăng ký của tôi và cho bạn biết cách hoạt động của nó. –
Chương trình nâng cao hoạt động tốt. Cảm ơn nhiều! –
Có cách nào để tránh cửa sổ xác nhận bật lên (chạy dưới dạng quản trị viên) bằng cách sử dụng mã nào đó trong mã không? – Affi