[java] 자바 외부 프로그램 실행하기(실행경로에 맞추어 정확히)
=================================
=================================
=================================
//이것은 레지스토리에서 설치경로를 얻는 방법
//레지에서 설정한 경로를 가져올때 요긴하게 쓰인다.
private static final String REGQUERY_UTIL = "reg query ";
private static final String REGSTR_TOKEN = "REG_SZ";
private static final String REGDWORD_TOKEN = "REG_DWORD";
private static final String PERSONAL_FOLDER_CMD = REGQUERY_UTIL +
"\"HKCU\\Software\\blizzd\\English\\DirPath Info\" /v oropath";
private void OnProgramRun() {
//정확한 경로 지정을 위해 "ProcessBuilder" 를 사용한다.
ProcessBuilder process = new ProcessBuilder();
Map<String, String> environment = process.environment();
process.redirectErrorStream(true);
//지정 경로를 설정한다.
process.directory(new File("C:\\Program Files (x86)\\blizzd\\"));
environment.put("name", "var");
//지정경로 부분에서 실행할 파일을 설정한다.
process.command("C:\\Program Files (x86)\\blizzd\\UpCheck.exe");
//process.
try {
// 설정한 객체를 실행(start()) 시켜주면 된다.
Process p = process.start();
BufferedReader output = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = output.readLine()) != null)
System.out.println(line);
// The process should be done now, but wait to be sure.
try {
p.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
=================================
=================================
=================================