我想在Java中以编程方式查找.exe文件路径,例如:
我尝试过的方法是对系统文件进行排序,直到找到"skype.exe",但这需要花费大量的时间和资源.
是否有任何黑客可以使它几乎是即时的,比如可能是一个Win_Api函数/ cmd命令,或者是在整个文件系统中进行排序,直到找到该程序的唯一方法?
我实际上发现了一些可行的东西,尽管不是最快的,但只需要大约 100 毫秒 - 500 毫秒即可完成,具体取决于 exe。
您需要使用运行时进程来执行此操作。
基本上,您进入驱动器的根目录,然后在 cmd 中使用这些命令搜索文件系统。
cd \
dir /s /b mytool.exe
Run Code Online (Sandbox Code Playgroud)
这将返回文件路径。
我的代码:
(我知道很黑客)
try {
Process p = Runtime.getRuntime().exec("./res/getPrograms.bat " + exeName);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while(true) {
line = input.readLine();
if(line == null) {
break;
}
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
以及 .bat 文件(我将参数“eclipse.exe”传递给表示为 %1 的 bat 文件):
cd \
dir /s /b %1
exit
Run Code Online (Sandbox Code Playgroud)
输出变为:
C:\Users\Mitchell\workspace\Remote Admin>cd \
C:\>dir /s /b eclipse.exe
C:\eclipse\eclipse.exe
Run Code Online (Sandbox Code Playgroud)