package ilarkesto.mswin;
import ilarkesto.base.Proc;
import java.util.StringTokenizer;
public class Registry {
public static final String HKCU = "HKCU";
public static final String HKCU_ENVIRONMENT = "HKEY_CURRENT_USER\\Environment";
public static void main(String[] args) {
appendToUsersPath("e:\\daten\\a101zi8");
}
public static void appendToUsersPath(String additionalPath) {
additionalPath = additionalPath.replace('/', '\\');
String path = getString(HKCU_ENVIRONMENT, "PATH");
if (path != null && path.indexOf(additionalPath) >= 0) return;
if (!additionalPath.endsWith(";")) additionalPath += ";";
if (path == null) path = "%PATH%;";
if (!path.endsWith(";")) path += ";";
path += additionalPath;
setString(HKCU_ENVIRONMENT, "PATH", path);
}
public static void setString(String key, String string, String value) {
Proc proc = new Proc("REG");
proc.addParameter("ADD");
proc.addParameter(key);
proc.addParameter("/f");
proc.addParameter("/v");
proc.addParameter(string);
proc.addParameter("/d");
proc.addParameter(value);
proc.start();
int ret = proc.getReturnCode();
String output = proc.getOutput();
if (ret != 0) throw new RuntimeException("Command failed: " + output);
}
public static String getString(String key, String string) {
Proc proc = new Proc("REG");
proc.addParameter("QUERY");
proc.addParameter(key);
proc.addParameter("/v");
proc.addParameter(string);
proc.start();
int ret = proc.getReturnCode();
String output = proc.getOutput();
if (ret == 1) return null;
if (ret != 0) throw new RuntimeException("Command failed: " + output);
StringTokenizer tokenizer = new StringTokenizer(output, "\n\r");
String valueLine = null;
while (tokenizer.hasMoreTokens()) {
String tok = tokenizer.nextToken().trim();
if (key.equals(tok)) {
valueLine = tokenizer.nextToken().trim();
break;
}
}
if (valueLine == null) { throw new RuntimeException("Parsing command output failed: " + output); }
valueLine = valueLine.substring(string.length() + 1);
int idx = valueLine.indexOf('\t') + 1;
valueLine = valueLine.substring(idx);
return valueLine;
}
}