}
public static void writeStringRegistryValue(String key, String data) throws WindowsRegistryException {
Project p = new Project();
ExecTask exec = new ExecTask();
exec.setProject(p);
exec.setTaskType("reg");
exec.setExecutable(findReg());
exec.setFailonerror(false);
exec.setResultProperty("result");
exec.setOutputproperty("output");
if (isRegExeVersion1()) {
if (doesRegistryValueExist(key)) {
exec.createArg().setValue("update");
} else {
exec.createArg().setValue("add");
}
exec.createArg().setValue(key + "=" + data);
} else {
exec.createArg().setValue("add");
RegKeyValue r = new RegKeyValue(key);
exec.createArg().setValue(r.key);
exec.createArg().setValue("/v");
exec.createArg().setValue(r.value);
exec.createArg().setValue("/d");
exec.createArg().setValue(data);
exec.createArg().setValue("/f");
}
exec.execute();
String result = p.getProperty("result");
String output = p.getProperty("output");
if (!"0".equals(result)) {
throw new WindowsRegistryException("exec return code " + result + ": " + output);
}