java如何获取管理员权限

java如何获取管理员权限

我们在工作中使用java操作一些系统文件夹或者一些注册表等会失败,因为没有管理员权限,无法访问。或者当把java程序打成exe或者jar包时,操作系统文件夹或注册表也会失败,除非以管理员方式启动才行。除了使用管理员方式启动外还有没有别的办法呢?有的

Java是没办法获取到管理员权限的,但是我们可以换个思路。java可以执行.bat文件,.bat文件是可以获取管理员权限的。那我们就可以把java中需要获取管理员的操作写到.bat脚本中。

例如,我最近需要把软件的快捷方式图标放入windows的开机自启目录中,这个操作是需要管理员权限的,那我就可以写一个.bat脚本(不会写的可以百度对应的命令,就是用cmd去操作文件或者注册表这种命令)
我是在程序运行时创建一个.bat文件,也可以提前写好,在程序中执行。.bat内容如下:

这段代码是固定的,必须放在.bat的开头,才能获取到管理员权限。

@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

在加上这段代码,这段代码是将一个文件拷贝至另一个地方,可以在cmd执行确认没有问题后再写进去

xcopy "C:\Users\13025\Desktop\ceshi.lnk"  "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\"

在java中调用即可,这时会有获取管理员权限的弹窗出来,点确定就可以了。

callCmd(".bat文件的路径");

private static void  callCmd(String locationCmd){
        StringBuilder sb = new StringBuilder();
        try {
            Process child = Runtime.getRuntime().exec(locationCmd);
            InputStream in = child.getInputStream();
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(in));
            String line;
            while((line=bufferedReader.readLine())!=null)
            {
                sb.append(line + "\n");
            }
            in.close();
            try {
                child.waitFor();
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            System.out.println("sb:" + sb.toString());
            System.out.println("callCmd execute finished");
        } catch (IOException e) {
            System.out.println(e);
        }
    }
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

累人猿-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值