java 怎么获取硬盘序列号

Python024

java 怎么获取硬盘序列号,第1张

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

}

}

}

试试是否可以:)