相关疑难解决方法(0)

运行时提升Java应用程序

我的软件突然出现了一个令人讨厌的问题.我正在制作一个与另一个现有软件(游戏)交互的程序.用户报告说他以管理员权限运行游戏,在这种情况下,我的程序停止为他工作.

简短的调查显示,有些人确实需要在管理员帐户下运行游戏,有些则不需要.如果我的程序能够检测到这一点并且警告用户游戏是否在管理员帐户下运行,那将是很棒的:

图片描述

如果用户单击"Elevate",我想要求windows提升java.exe运行我的jar文件并调用典型的UAC对话框.

图片描述
显然,这次问题不是关于java更新程序而是JRE

我的问题是:这可能吗?Windows可以提升我java.exe实例的权限吗?java有办法吗?或者我可以使用命令行命令吗?

我想避免重新启动程序(尽管它可能不是那么重要).

编辑: 如果您查看注释,您将看到无法避免重新启动应用程序 - 进程只能启动升级而不会升高.不幸的是,这有点改变了这个问题.基本上,现在听起来更像是:" 如何使用管理员权限重新启动我的应用程序? ".当然,除非有两个java.exe共享一个罐子的技巧......

java windows admin

23
推荐指数
2
解决办法
4550
查看次数

通过UAC提升ProcessBuilder流程?

我正在尝试运行外部可执行文件,但显然它需要提升.代码是这样的,从使用ProcessBuilder的示例修改(因此具有一个参数的数组):

    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(); …
Run Code Online (Sandbox Code Playgroud)

java elevation processbuilder

15
推荐指数
1
解决办法
6167
查看次数

标签 统计

java ×2

admin ×1

elevation ×1

processbuilder ×1

windows ×1