Java 我的工具类---使用java代码,注册可执行jar到桌面右键。为程序获取管理员权限

使用cmd命令在注册表中添加一个注册表项,并写入数据:

reg add "注册表项" /d "数据"

注册表数据:

"D:\dev\java\jdk1.8.0_91\bin\java.exe" -jar "C:\\Users\\lan\\Desktop\\jar\\runable\\MyRuableTools\\diaryPlan.jar"

使用cmd命令写入以上的注册表数据:

reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\diaryPlan.jar\command" /d "\"D:\dev\java\jdk1.8.0_91\bin\java.exe\" -jar "\"C:\\Users\\lan\\Desktop\\jar\\runable\\MyRuableTools\\diaryPlan.jar\""

java实现:在桌面右键添加可执行jar

package regedit;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class RegeditDesktopRightClick2
{
    static Scanner scanner=new Scanner(System.in);
    public static void main(String[] args)
    {

        String location="reg add \"HKEY_CLASSES_ROOT\\Directory\\Background\\shell\\";
        System.out.println("##########    把可执行jar包注册到桌面右键.    ##########");
        System.out.println("可执行jar包的绝对路径");
        String filePath=scanner.nextLine();
        if(filePath.contains("\""))
        {
//          去掉头尾的双引号
            filePath=filePath.substring(1, filePath.length()-1);
        }
        int fileNameIndex=filePath.lastIndexOf('\\');
        String fileName=filePath.substring(fileNameIndex+1);
        //先读取对应的注册表项,先看是不是已经有这个注册表项了,以避免重复注册
        try
        {
            Process ps = null;
            ps = Runtime.getRuntime().exec(
                    "reg query HKEY_CLASSES_ROOT\\Directory\\Background\\shell");
            ps.getOutputStream().close();
            InputStreamReader i = new InputStreamReader(ps.getInputStream());
            String line;
            BufferedReader ir = new BufferedReader(i);
            while ((line = ir.readLine()) != null)
            {
                if(line.contains(fileName))
                {
                    System.out.println(fileName+"已经注册了,不用重新注册!");
                    return ;//已经注册了,就直接退出程序
                }
            }
        } catch (IOException e)
        {
            e.printStackTrace();
        }

        //拼接注册cmd指令
        StringBuffer stringBuffer=new StringBuffer();
        stringBuffer.append(location);
        stringBuffer.append(fileName+"\\command\"");
        stringBuffer.append(" /d ");

        String java_jar="\"\\\""
                //读取环境变量--JDK目录
                + System.getenv("JAVA_HOME")
                //找到jdk下的java.exe文件
                //执行java.exe -jar命令
                +"\\bin\\java.exe\\\" -jar "
                ;

        stringBuffer.append(java_jar);
        stringBuffer.append("\"\\\""+filePath+"\\\"\"");
        System.out.println("执行命令: \n"+stringBuffer.toString());


        run_bat(stringBuffer.toString());
    }
    /**
     * 运行cmd命令.
     * @param command cmd命令。
     */
    static void run_bat(String command)
    {
        Runtime runtime=Runtime.getRuntime();
        Process process=null;
        StringBuilder sb = new StringBuilder();
        String line = null;
        try
        {
            process=runtime.exec(command);
            process.waitFor();
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));

            while ((line = bufferedReader.readLine()) != null)
            {
                sb.append(line + "\n");
                    System.out.println(line);
            }

        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(process.exitValue()==0)
            System.out.println("执行完成");
        else 
            System.out.println("执行失败");
    }
}

把上面的代码打包成可执行jar:注册可执行jar到桌面右键.jar。然后在同目录下新建bat文件:注册可执行jar到桌面右键.bat注册可执行jar到桌面右键.bat文件中写入:

@echo off
java -jar C:\Users\lan\Desktop\jar\regeditTools\桌面右键\注册可执行jar到桌面右键.jar
ping -n 10 127.0.0.1>nul %延迟3秒钟%

然后建立注册可执行jar到桌面右键.bat 的快捷方式,然后让该快捷方式以管理员权限。这个就能得到管理员权限了,不然的话没有管理员权限是不能修改注册表的。
目录结构
为快捷方式设置管理员权限
选中该快捷方式,点击鼠标右键属性,在快捷方式选项卡下点击高级,然后勾选用管理员身份运行
为快捷方式建立管理员权限

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值