我一直通过执行 "reg query" 来读取键和值,但几天前它停止了工作。 我没有更改任何代码。 读取键值仍然正常工作:
Process process = Runtime.getRuntime().exec(
"reg query " + "\"" + root + key + "\" /v " + valueName);
InputStreamReader inputreader = new InputStreamReader(
process.getInputStream());
BufferedReader reader = new BufferedReader(inputreader);
process.waitFor();
String line = null;
while ((line = reader.readLine()) != null) {
if (line.contains("REG_SZ")) {
Pattern pattern = Pattern.compile("REG_SZ\\s*(.*)");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
return line.substring(matcher.start(1));
}
} else if (line.contains("REG_DWORD")) {
Pattern pattern = Pattern.compile("REG_DWORD\\s*(.*)");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
return line.substring(matcher.start(1));
}
}
}
但是在读取密钥时,process.waitFor() 永远不会返回。这个方法在几天前还能正常工作:
Process process = Runtime.getRuntime().exec(
"reg query " + "\"" + root + key + "\"");
InputStreamReader inputreader = new InputStreamReader(
process.getInputStream());
BufferedReader reader = new BufferedReader(inputreader);
process.waitFor();
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(">>"+line);
if (line.contains(root)) {
list.add(line.substring(line.lastIndexOf('\\') + 1));
}
}
String[] keys = new String[list.size()];
return list.toArray(keys);
如果我在Windows命令行运行查询,它可以正常工作,所以我的查询并没有错误...我已经将小程序运行在服务器上,但是两天前我们的外部测试人员报告说该小程序正在冻结。然而,对于我和我的同事来说,它仍然在工作。但今天早上它也冻结了,并且从那时起就无法工作了...