package com.test
import java.io.IOException
import java.util.Scanner
public class CpuUtil {
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis()
Process process = Runtime.getRuntime().exec(
new String[] { "wmic", "cpu", "get", "ProcessorId" })
process.getOutputStream().close()
Scanner sc = new Scanner(process.getInputStream())
String property = sc.next()
String serial = sc.next()
System.out.println(property + ": " + serial)
System.out.println("time:" + (System.currentTimeMillis() - start))
}
}
//=======================获取硬盘序列号==========================
package com.test
import java.io.BufferedReader
import java.io.File
import java.io.FileWriter
import java.io.InputStreamReader
public class DiskUtil {
public static String getSerialNumber(String drive) {
String result = ""
try {
File file = File.createTempFile("realhowto",".vbs")
file.deleteOnExit()
FileWriter fw = new java.io.FileWriter(file)
String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
+"Set colDrives = objFSO.Drives\n"
+"Set objDrive = colDrives.item(\"" + drive + "\")\n"
+"Wscript.Echo objDrive.SerialNumber" // see note
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){
e.printStackTrace()
}
return result.trim()
}
public static void main(String[] args) {
String sn = DiskUtil.getSerialNumber("C")
System.out.println(sn)
}
//=============================获取主板序列号====================
package com.test
import java.io.BufferedReader
import java.io.File
import java.io.FileWriter
import java.io.InputStreamReader
public class MiscUtil {
public static String getMotherboardSN() {
String result = ""
try {
File file = File.createTempFile("realhowto", ".vbs")
file.deleteOnExit()
FileWriter fw = new java.io.FileWriter(file)
String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
+ "Set colItems = objWMIService.ExecQuery _ \n"
+ " (\"Select * from Win32_BaseBoard\") \n"
+ "For Each objItem in colItems \n"
+ "Wscript.Echo objItem.SerialNumber \n"
+ "exit for ' do the first cpu only! \n" + "Next \n"
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) {
e.printStackTrace()
}
return result.trim()
}
public static void main(String[] args) {
String cpuId = MiscUtil.getMotherboardSN()
System.out.println(cpuId)
}
}
这个是获取不到的,因为客户端与你服务器一般都是经过复杂的网络连接来的,通常拿到的MAC一般是线路上某台路由器的MAC,没有多大意义。至于硬盘序列号和CPU序列号,这根本无法从一个soket连接中取到。就好像,我无法知道比如在QQ聊天中对面是人还是狗一样。