Java и реестр Windows


Самый простой способ работы в языке java с реестром windows - это с помощью внешних программ, которые уже встроены в данную операционную систему. Сегодня мы будем использовать командную строку и программу reg. Код программы, вносящей изменения в реестр:

package up7;

import java.io.*;

public class Up7 {

    private static void readWinReg (String zn) throws Exception{
    Runtime rt = Runtime.getRuntime();
    Process proc = null;
				
		try {
			proc = rt.exec("cmd");
			
		} catch (Exception exc){
			System.out.println("Консоль не запущена");
		}
		
		BufferedReader bfIn = new BufferedReader(new InputStreamReader(proc.getInputStream(), "UTF-8"));
		BufferedWriter bfOut = new BufferedWriter (new OutputStreamWriter (proc.getOutputStream(), "UTF-8"));
		
		int ir=0;
                while ( (ir = bfIn.read()) != 62 )
		{
			System.out.print((char) ir);	
		}
		
        System.out.print((char) ir);      
		bfOut.write("reg query " + zn + " /s");
		bfOut.newLine();
        bfOut.flush();
				
                while ( (ir = bfIn.read()) != 62 )
		{
			System.out.print((char) ir);	
		}  
    }
    
    private static void addWinReg (String zn, String zn2, String zn3) {
    
   String s = "cmd /C " + "reg add " + zn + " /v " + zn2 + " /t REG_SZ /d " + "\"" + zn3 + "\"";
    try {  Runtime.getRuntime().exec(s); }
    catch(Exception ex){ex.printStackTrace();}
    }
    
    private static void delWinReg (String zn, String zn2) {
    String s = "cmd /C " + "reg delete " + zn + " /v " + zn2 + " /f\r\n";
    try {  Runtime.getRuntime().exec(s); }
    catch(Exception ex){ex.printStackTrace();}
    } 
    
	public static void main(String[] args) throws Exception {   
       String rees = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Intel\\Audio"; 
       String rees2 = "name";
       String rees3 = "value";
        
       addWinReg (rees, rees2, rees3);  
       readWinReg (rees);
       delWinReg (rees, rees2);
       readWinReg (rees);
      			
	}
}
Пара комментариев по тексту программы. Здесь используются три метода: readWinReg (чтение реестра), addWinReg (добавление значения), delWinReg (удаление значения). В основном методе (void main) последовательно выполняется запись-чтение-удаление-чтение. Для примера я выбрал путь в реестре, в котором хранятся значения от компании Intel, раздел Audio. Мы записываем в этот раздел поле с названием "name" и значением "value". Тип REG_SZ - обыкновенная строка в кодировке Unicode. Если все в порядке, то сначала программа выведет что-то типа этого:

AudioDriverPresent REG_BINARY 01
name REG_SZ value
а затем:

AudioDriverPresent REG_BINARY 01
и закончит работу.

Вот так несложно можно работать с реестром windows на Java. Если у вас остались вопросы или есть какие-либо комментарии, а также требуется написать практическую работу на java, решить задачу на данном языке или необходима программа, то смело пишите на почту up777up@yandex.ru - я с удовольствием помогу вам. За небольшую плату.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, java, реестр




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 15. Базовые операции со строками C#
Крокодил и луна
Шифрование строки с помощью C# и SHA-1