package me.pbox.env; import me.pbox.invoke.InvokeException; import me.pbox.invoke.InvokeUtil; import org.apache.log4j.Logger; /** * @author Mike Mirzayanov (mirzayanovmr@gmail.com) */ public class EnvironmentUtil { private static final Logger logger = Logger.getLogger(EnvironmentUtil.class); public static boolean appendPath(String directory) { logger.info("Append to the PATH the directory '" + directory + "'."); try { boolean result = InvokeUtil.run(false, false, Environment.getBin("pathed"), "-a", directory, "-s") == 0; if (result) { logger.info("Successfully appended to the PATH the directory '" + directory + "'."); } else { logger.warn("Failed to append to the PATH the directory '" + directory + "'."); } return result; } catch (InvokeException e) { logger.warn("Can't append to PATH '" + directory + "'.", e); return false; } } public static boolean removePath(String directory) { logger.info("Remove from the PATH the directory '" + directory + "'."); try { boolean result = InvokeUtil.run(false, false, Environment.getBin("pathed"), "-r", directory, "-s") == 0; if (result) { logger.info("Successfully removed from the PATH the directory '" + directory + "'."); } else { logger.warn("Failed to remove from the PATH the directory '" + directory + "'."); } return result; } catch (InvokeException e) { logger.warn("Can't remove from PATH '" + directory + "'.", e); return false; } } public static boolean setEnvironmentVariable(String name, String value) { logger.info("Set environment variable '" + name + "=" + value + "'."); try { boolean result = InvokeUtil.run(false, false, "setx.exe", name, value, "/M") == 0; if (result) { logger.info("Successfully set environment variable '" + name + "=" + value + "'."); } else { logger.warn("Failed to set environment variable '" + name + "=" + value + "'."); } return result; } catch (InvokeException e) { logger.warn("Can't set environment variable '" + name + "' to value '" + value + "'.", e); return false; } } public static boolean removeEnvironmentVariable(String name) { logger.info("Remove environment variable '" + name + "'."); try { int setxExitCode = InvokeUtil.run(false, false, "setx.exe", name, "\"\"", "/M"); try { boolean result = InvokeUtil.run(false, false, "reg.exe", "delete", "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", "/F", "/V", name) == 0 && setxExitCode == 0; if (result) { logger.info("Successfully removed environment variable '" + name + "'."); } else { logger.warn("Failed to remove environment variable '" + name + "'."); } return result; } catch (InvokeException e) { logger.warn("Can't remove environment variable '" + name + "' using reg.exe.", e); return false; } } catch (InvokeException e) { logger.warn("Can't remove environment variable '" + name + "' using setx.exe.", e); return false; } } }