如何使用Java检测exe中的唯一值?
我现在正在做这件事如何使用Java检测exe中的唯一值?,java,list,process,hex,exe,Java,List,Process,Hex,Exe,我现在正在做这件事 public class ProcessKill { private static final String TASKLIST = "tasklist"; private static final String KILL = "taskkill /IM "; public static boolean isProcessRunging(String
public class ProcessKill {
private static final String TASKLIST = "tasklist";
private static final String KILL = "taskkill /IM ";
public static boolean isProcessRunging(String serviceName) throws Exception {
Process p = Runtime.getRuntime().exec(TASKLIST);
BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String line;
while ((line = reader.readLine()) != null){
System.out.println(line);
if (line.contains(serviceName)){
return true;
}
}
return false;
}
public static void killProcess(String serviceName) throws Exception {
Runtime.getRuntime().exec(KILL + serviceName);
}
}
public static void main(String args[]) throws Exception{
ProcessKill pkill = new ProcessKill();
String processName = "wmplayer.exe";
if (pkill.isProcessRunging(processName)){
pkill.killProcess(processName);
}
}
唯一的问题是,如果名字改变了怎么办?我不想一直更新代码。有没有一种方法可以获取.exe文件的十六进制值并将其读入Java以便它检测到它
谢谢首先,您可以通过执行
wmic.exe process,其中name='“+processName+”
检查要终止的进程是否正在运行-尽管wmic提供了一个进程删除选项,但java进程在调用该选项时会阻塞wmic PROCESS
(没有任何指定的进程名称)返回windows计算机上当前正在运行的所有进程的列表(和说明),您可以使用InputsRealReader()
读入该列表,然后迭代所有正在运行的进程,并检查其中哪些进程可能是您的目标进程。此外,目标进程的行包含传递给进程的参数,如果有多个进程正在运行或需要删除应用程序使用的某些资源文件,则可以使用这些参数来区分进程
在调试使用嵌入式mongodb进行单元测试的应用程序时,在调试后,嵌入式mongod进程继续运行,并拒绝进行下一个单元测试(因为单元测试清理未正确执行)-此外,它创建了一个本地数据存储,无法被新的嵌入式mongod进程覆盖-因此需要手动删除。因此,我从WMIC返回的行中提取了文件,并在自动终止进程后删除了文件。据我所知,您不希望保留硬编码的进程名称。在这种情况下,只需通过命令行参数传递:
public static void main(String args[]) throws Exception{
ProcessKill pkill = new ProcessKill();
String processName = args[0];
if (pkill.isProcessRunging(processName)){
pkill.killProcess(processName);
}
}
现在,用户必须在命令行中提供要终止的进程名称:
:>ProcessKill notepad.exe
然而,我不明白为什么你需要你的实用程序呢?实际上,您只需运行
processkill
,用户就可以直接使用它了。您的实用程序不提供任何附加功能 你到底想要什么?您的代码只是按名称终止任务,我个人不理解短语“如果相同的内容发生了变化”的含义。同样的什么?同样的过程?相同的可执行文件?抱歉,输入错误。这本来是要写的,现在写的是“名字”。