Read/write to Windows registry using Java

前端 未结 24 1563
日久生厌
日久生厌 2020-11-21 05:45

How is it possible to read/write to the Windows registry using Java?

24条回答
  •  礼貌的吻别
    2020-11-21 06:28

    The best way to write to the register probably is using the reg import native Windows command and giving it the file path to the .reg file which has been generated by exporting something from the registry.

    Reading is done with the reg query command. Also see the documentation: https://technet.microsoft.com/en-us/library/cc742028.aspx

    Therefore the following code should be self-explanatory:

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class WindowsRegistry
    {
        public static void importSilently(String regFilePath) throws IOException,
                InterruptedException
        {
            if (!new File(regFilePath).exists())
            {
                throw new FileNotFoundException();
            }
    
            Process importer = Runtime.getRuntime().exec("reg import " + regFilePath);
    
            importer.waitFor();
        }
    
        public static void overwriteValue(String keyPath, String keyName,
                String keyValue) throws IOException, InterruptedException
        {
            Process overwriter = Runtime.getRuntime().exec(
                    "reg add " + keyPath + " /t REG_SZ /v \"" + keyName + "\" /d "
                            + keyValue + " /f");
    
            overwriter.waitFor();
        }
    
        public static String getValue(String keyPath, String keyName)
                throws IOException, InterruptedException
        {
            Process keyReader = Runtime.getRuntime().exec(
                    "reg query \"" + keyPath + "\" /v \"" + keyName + "\"");
    
            BufferedReader outputReader;
            String readLine;
            StringBuffer outputBuffer = new StringBuffer();
    
            outputReader = new BufferedReader(new InputStreamReader(
                    keyReader.getInputStream()));
    
            while ((readLine = outputReader.readLine()) != null)
            {
                outputBuffer.append(readLine);
            }
    
            String[] outputComponents = outputBuffer.toString().split("    ");
    
            keyReader.waitFor();
    
            return outputComponents[outputComponents.length - 1];
        }
    }
    

提交回复
热议问题