Também testei e tive como retorno um número negativo, alguém sabe explicar se está correto?
Tb tive retorno de número negativo, oque fiz foi converter para Hexa, me trouxe o valor certinho do volume do hd
DiskUtils utilConnection = new DiskUtils("C");
int valor = utilConnection.getSerialNumber();
String serial = Integer.toHexString(valor);
Para aqueles que como eu pegaram um retorno errado no serial do HD
public static String getHDSerial(String drive) {
String result = "";
try {
File file = File.createTempFile("tmp", ".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
String vbs = "strComputer = \".\"\n"+
"Set objWMIService = GetObject(\"winmgmts:{impersonationLevel=impersonate}!\\\\\" & strComputer & \"\\root\\cimv2\")\n"+
"str = \"\"\n"+
"disk = \"" + drive.toUpperCase() + ":\"\n"+
"Set colItems = objWMIService.ExecQuery(\"SELECT * FROM Win32_LogicalDisk\")\n"+
"For Each objItem In colItems\n"+
"If objItem.Name = disk Then\n"+
"Wscript.Echo objItem.VolumeSerialNumber\n"+
"End If\n"+
"Next";
fw.write(vbs);
fw.close();
Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
result += line;
}
input.close();
} catch (Exception e) {
}
if (result.trim().length() < 1 || result == null) {
result = "NO_DISK_ID";
}
return result.trim();
}
isto é para windows, gostaria de ver isto multiplataforma…
Who can do it???
Sei que o Post e antigo mas pode ajudar alguém,
eu tinha esse metodo no meu projeto mas ele demorar muito pra retornar o id do processador então criei este que e mais rápido.
ele gasta em torno de 100 milesimos enquanto da outra forma gasta mais de 1000
try {
Process pid = Runtime.getRuntime().exec("wmic cpu get processorId");
BufferedReader in = new BufferedReader(new InputStreamReader(pid.getInputStream()));
String line = "";
while (in.read() > 0) {
line += in.readLine();
}
line = line.substring(line.indexOf(" "), line.length());
line =line.replaceAll(" ", "");
System.out.println(line);
} catch (IOException ex) {
Logger.getLogger(LacamentoContasControler.class.getName()).log(Level.SEVERE, null, ex);
}