In die Registry schreiben

Ich bin halt immer für den einfachsten Weg. Ne Datei schreibst du so: (Danke an Tom!)
Code:
 try
                {
                    File file = new File(StrMetabatchModells);
                    BufferedWriter bw = new BufferedWriter(new FileWriter(file));
                    bw.write("Test Text bla bla");
                    bw.newLine();
                    bw.flush();
                    bw.close();
                    tfDBModell.setText(StrMetabatchModells);
                } 
catch (Exception ex)
                {
                }
            }
und ausführen geht so:
Code:
try
                    {
                        Runtime.getRuntime().exec("regedit /s c:\\pfad_zu_deiner_regedit");
                        System.exit(0);
                    } catch (Exception ex)
                    {
                    }
Freut mich, dass ich endlich mal jemandem helfen konnte!
 
Vielen Dank für die ganzen Posts ich habe die sachen kombienert.

Nun habe ich nur noch das Problem dass wenn ich das File schreibe ich keine "\" ausgeben kann. Hat jemand einen Lösungsvorschlag wie ich diesen Pfad ausgeben kann?

HKEY_LOCAL_MACHINE\.....

mfg rmi
 
meinst du in einem String?
Code:
String regKey = "Windows Registry Editor Version 5.00\n\n"+,

"[HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment]"+,
" \"meinKey\"=\"meinValue\" ";
so koennte man z.b. den string aufbauen, mit \\ wird der bachslash "escaped" das heisst auch als backslash ausgegeben, \n\n ist fuer zwei newlines, unter windows musst du evt. hinter jedes \n noch ein \r setzen, ach ne ich sehe gerade das du BufferedWriter beutzt, dann schreib mit dem die newlines ind deine datei(obwohl di nicht mal eine datei erzeugen musst, da du mit regedit auch den schluessel direkt importieren kannst, wenn es also nur einer ist wuerde ich mir ueberlegen ob sich der aufwand einer textdatei lohnt, oder ob du ihn nicht dirket in die reg importeierst...)
 
THX an alle!

Ihr habt das Problem gelöst. Ich hoffe ich kann euch auch mal helfen.

mfg Rmi
 
Hier ist der Finale Code

Code:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

public class Registry {
	
	static String path; //Kann man später mit Eingaben holen
	static String fileName;
	
	static String key;
	static String value;
	
	static File file;

	public static void main(String[] args) {
			
		try
		{
			path = ("C:/"); //Kann man später mit Eingaben holen
			fileName = ("registry.reg");
			
			key = "TestVar";
			value = "TestValue";
			
			file = new File(path, fileName);			
			file.deleteOnExit(); //Wenn das Programm endet wird reg file gelöscht
						
			BufferedWriter bw = new BufferedWriter(new FileWriter(file));
			
			//Ab hier wird ins file geschrieben
			bw.write("Windows Registry Editor Version 5.00");
			bw.newLine();
			bw.newLine();
			//Wohin soll geschrieben werden
			bw.write("[HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment]");
			bw.newLine();
			
			//Die Keyzeile wird zusammengesetzt. - "key"="value"
			bw.write("\"" + key + "\"" + "=" + "\"" + value + "\"");
			bw.newLine();
			
			bw.flush(); //Dateien werden geflushed
			bw.close(); //File wird geschlossen
		} 
		catch (Exception ex)
		{
		}
		
		run();
	}
	
	public static void run()
	{
		try
        {
            Runtime.getRuntime().exec("regedit /s " + path + fileName);
            System.exit(0);
        } catch (Exception ex)
        {
        	System.out.println("Fehler beim ausführen der Datei");
        }
	}
}

Nochmal THX an alle die mitgeholfen haben
 
was du evt. noch machen solltest, ist eine ueberpruefung der account rechte, den soweit ich weiss darf nur der Admin dort in die reg schreiben, ich weiss nun nicht ob das ein internes firmen programm ist oder eins das ausgeliefert werden soll, nur so als hinweis...
 
was ich noch versuche zu machen ist dass dieses Programm als SystemTask ausgefuhrt wird. --> Alle Rechte

Kennst du dich da aus?

mfg RMi
 
hmm, das ist nichts java speziefisches, eine moegliche idee waere es, das ganze evt. als Service zu starten und dem Service die rechte zu geben, die das prog braucht, ich weiss halt nicht wie "Sicherheits vernarrt' du bist, bzw. dein Chef ^^ du musst dann echt guten Code schreiben, ich glaube ich hatte neulich einen artikel gelesen wie man Java als Service startet ich schau mal gleich..

//edit

das war zwar nicht was ich meinte sieht aber auch nett aus
http://www.kcmultimedia.com/javaserv/
ansonsten gab es im ressourcekit von windows tools mit denen man ein beliebiges prog als Service starten kann, musst mal zu Microsoft gehen ich glaube das konnte man da runterladen, oder schau mal bei http://www.sysinternals.com vorbei, da koennte es auch was geben...
 
Zuletzt bearbeitet:
weis vieleicht jemand eine möglichkeit die sowhol auf win2000 als auch win xp t weil winxp hat ne andere regedit version wie win 2000
 
Zuletzt bearbeitet:
Zurück