JAVA调用window应用程序有两种方法,分别是cmd调用和rundll32调用方法。两种方法的区别在于调用的命令不同,执行方法都是Runtime.getRuntime().exec();
Cmd
Cmd调用方法:Runtime.getRuntime().exec(Cmd命令 + 文件绝对路径);
Cmd命令:
1、 执行简单的命令,把命令解释器包含在exec()的参数中。
//打开百度网页
String command="cmd /c start http://www.baidu.com";
Runtime.getRuntime().exec(command);
2、 批处理(bat)文件,将cmd命令写到myFile.bat里即可
Runtime.getRuntime().exec("cmd /c start myFile.bat");
Rundll32
即,执行32位的DLL文件。作用是执行DLL文件中的内部函数,以命令行的方式调用动态链接程序库,这样在进程当中,只会有 Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。
rundll32.exe调用方法:Runtime.getRuntime().exec(rundll32.exe命令 + 文件绝对路径);
rundll32.exe命令的具体使用方法如下:
Rundll32.exe DLLname,Functionname [Arguments]
l DLLname为需要执行的DLL文件名;
l Functionname为前边需要执行的DLL文件的具体引出函数;
l Arguments]为引出函数的具体参数。
例子
下面分别以调用1.pps(pps后缀为自动播放PPT)文件为例,进行说明。
cmd调用方法:
Runtime.getRuntime().exec("cmd /c start " + 程序的绝对路径);
try {
Runtime.getRuntime().exec("cmd /c start " + "C:\\1.pps");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Rundll32调用方法:
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ 程序的绝对路径);
try {
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + "C:\\1.pps");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}