public static void main(String[] args) {
String HDserialnumber = getHdSerialInfo()
System.out.println(HDserialnumber)
}
public static String getHdSerialInfo() {
String line = ""
String HdSerial = ""// 定义变量 硬盘序列号
try {
Process proces = Runtime.getRuntime().exec("cmd /c dir c:")// 获取命令行参数
BufferedReader buffreader = new BufferedReader(new InputStreamReader(proces.getInputStream()))
while ((line = buffreader.readLine()) != null) {
if (line.indexOf("卷的序列号是 ") != -1) { // 读取参数并获取硬盘序列号
HdSerial = line.substring(line.indexOf("卷的序列号是 ") + "卷的序列号是 ".length(), line.length())
break
}
}
} catch (IOException e) {
e.printStackTrace()
}
return HdSerial// 返回硬盘序列号 卷的序列 非物理
}
利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime().exec(String[])这个接口,不然复杂命令的执行会有问题。例子如下(拿cpu个数,其他类似):定义命令:
WindowsCmd ="cmd.exe /c echo %NUMBER_OF_PROCESSORS%"//windows的特殊
SolarisCmd = {"/bin/sh", "-c", "/usr/sbin/psrinfo | wc -l"}
AIXCmd = {"/bin/sh", "-c", "/usr/sbin/lsdev -Cc processor | wc -l"}
HPUXCmd = {"/bin/sh", "-c", "echo \"map\" | /usr/sbin/cstm | grep CPU | wc -l "}
LinuxCmd = {"/bin/sh", "-c", "cat /proc/cpuinfo | grep ^process | wc -l"}
然后判断系统:
os = System.getProperty("os.name").toLowerCase()
根据不同的操作系统call不同的命令。
*/
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import java.io.LineNumberReader
public class GetMACAddress
{
public String getMACAddress(String ipAddress)
{
String str = "",strMAC = "",macAddress = ""
try
{
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress)
InputStreamReader ir = new InputStreamReader(pp.getInputStream())
LineNumberReader input = new LineNumberReader(ir)
for(int i = 1i <100i++)
{
str = input.readLine()
if(str != null)
{
if(str.indexOf("MAC Address") >1)
{
strMAC = str.substring(str.indexOf("MAC Address") + 14,str.length())
break
}
}
}
}
catch(IOException ex)
{
return "Can't Get MAC Address!"
}
//
if(strMAC.length() <17)
{
return "Error!"
}
macAddress = strMAC.substring(0,2) + ":"
+ strMAC.substring(3,5) + ":"
+ strMAC.substring(6,8) + ":"
+ strMAC.substring(9,11) + ":"
+ strMAC.substring(12,14) + ":"
+ strMAC.substring(15,17)
//
return macAddress
}
public static void main(String[] args)
{
GetMACAddress getMACAddress = new GetMACAddress()
System.out.println(getMACAddress.getMACAddress("172.18.8.225"))
try
{
java.lang.Process proc = Runtime.getRuntime().exec("ipconfig /all")
InputStream istr = proc.getInputStream()
byte[] data = new byte[1024]
istr.read(data)
String netdata = new String(data)
System.out.println("Your Mac Address=" + procAll(netdata))
}
catch(IOException e)
{
System.out.println("error=" + e)
}
}
public static String procAll(String str)
{
return procStringEnd(procFirstMac(procAddress(str)))
}
public static String procAddress(String str)
{
int indexof = str.indexOf("Physical Address")
if(indexof >0)
{
return str.substring(indexof,str.length())
}
return str
}
public static String procFirstMac(String str)
{
int indexof = str.indexOf(":")
if(indexof >0)
{
return str.substring(indexof + 1,str.length()).trim()
}
return str
}
public static String procStringEnd(String str)
{
int indexof = str.indexOf("\r")
if(indexof >0)
{
return str.substring(0,indexof).trim()
}
return str
}
}
import java.util.Vector
class GetNetMAC
{
//网卡物理地址长度
static private final int _physicalLength = 16
public static void main(String[] args)
{
//output you computer phycail ip address
System.out.println("The MAC Addressis:\t" + getPhysicalAddress())
}
static public String getPhysicalAddress()
{
GetNetMACShell shell = new GetNetMACShell()
String cmd = "cmd.exe /c ipconfig/all"
Vector result
result = shell.execute(cmd)
return parseCmd(result.toString())
}
//从字符串中解析出所需要获得的字符串
static private String parseCmd(String s)
{
String find = "Physical Address. . . . . . . . . :"
int findIndex = s.indexOf(find)
if(findIndex == -1)
{
return "not find"
}
else
{
return s.substring(findIndex + find.length() + 1,findIndex + find.length() + 1 + _physicalLength)
}
}
}
import java.io.BufferedReader
import java.io.DataInputStream
import java.io.InputStreamReader
import java.util.Vector
public class GetNetMACShell
{
private Process process = null
public Vector execute(String shellCommand)
{
try
{
Start(shellCommand)
Vector vResult = new Vector()
DataInputStream in = new DataInputStream(process.getInputStream())
BufferedReader reader = new BufferedReader(new InputStreamReader(in))
String line
do
{
line = reader.readLine()
if(line == null)
{
break
}
else
{
vResult.addElement(line)
}
}
while(true)
reader.close()
return vResult
}
catch(Exception e)
{
//error
return null
}
}
public void Start(String shellCommand)
{
try
{
if(process != null)
{
kill()
}
Runtime sys = Runtime.getRuntime()
process = sys.exec(shellCommand)
}
catch(Exception e)
{
System.out.println(e.toString())
}
}
public void kill()
{
if(process != null)
{
process.destroy()
process = null
}
}
}
试试是否可以:)