利用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 = 1;i < 100;i++)
{
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;
}
}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=779677
分享到:
相关推荐
DELPHI 到得CPU序列号、网卡MAC地址、注册码保护例子
支持WIN9X/ME/NT/2K/XP下读主板、CPU序列号、网卡MAC地址、BIOS相关信息的读取,可做程序加密使用。 注:由于早期CPU产品无序列号,对其读取只能得到固定字符串。 详细使用方法请参照软件中的Readme.txt文档。 欢迎...
在这里,作者提供了获得CPU序列号和网卡Mac地址的方法。1.Delphi中可这个控件或这个动态库。控件提供了两个属性,MacAddress和CPUSerialNumber。2.Delphi外的语言,请使用这个动态库。动态库提供了两个函数,...
(含delphi源程序)在这里,作者提供了获得CPU序列号和网卡Mac地址的方法。1.Delphi中可这个控件或这个动态库。控件提供了两个属性,MacAddress和CPUSerialNumber。2.Delphi外的语言,请使用这个动态库。动态库提供了...
本文将详细讨论如何使用C语言在Linux和Windows操作系统中获取CPU序列号、硬盘序列号、网卡信息(包括网卡名称、IP地址、MAC地址以及网络连接状态)。 首先,我们来探讨CPU序列号的获取。在Windows系统中,可以使用...
DELPHI CPU序列号、网卡MAC地址、注册码保护例子
在这里,作者提供了获得CPU序列号和网卡Mac地址的方法。1. Delphi中可这个控件或这个动态库。控件提供了两个属性,MacAddress和CPUSerialNumber。2. Delphi外的语言,请使用这个动态库。动态库提供了两个函数,...
在IT领域,获取系统硬件信息是常见的需求,例如CPU序列号、网卡MAC地址和硬盘序列号。Delphi是一款强大的面向对象的 Pascal 编程语言,它提供了丰富的库和API调用来实现这些功能。在MacOS环境下,虽然Delphi不是原生...
取CPU序列号.网卡MAC地址.注册码保护软件使用权例子源程序
HWInfo.dll是一个用于提取硬盘序列号、CPU相关信息、主板序列号以及网卡MAC地址的动态链接库,用于为共享软件产生机器码提供硬件特征值
支持WIN9X/ME/NT/2K/XP下读主板、CPU序列号、网卡MAC地址、BIOS相关信息的读取,可做程序加密使用。注:由于早期CPU产品无序列号,对其读取只能得到固定字符串。详细使用方法请参照软件中的Readme.txt文档。欢迎大家...
C++获取计算机的CPU序列号,硬盘序列号(无需管理权限),网卡MAC地址,在vs2005环境下编译通过,已在win10,win7系统测试通过。
本文将详细讲解如何使用C语言在Linux和Windows操作系统下获取CPU序列号、硬盘序列号以及网卡的相关信息,如网卡名称、IP地址、MAC地址和网络连接状态。 首先,让我们关注CPU序列号的获取。在Windows系统中,可以...
本文将详细介绍如何获取CPU序列号、硬盘序列号以及网卡信息,这些都是计算机硬件的重要标识。 首先,CPU序列号是每个中央处理器(CPU)的独特标识,类似于人的身份证。它是由CPU制造商在生产过程中赋予的唯一代码,...
**描述:“Java获得CPU序列号,Java通过JNI连接C语言,从C中获得CPU的序列号。”** - **Java通过JNI连接C语言**:表明了实现该功能的技术路径,即通过JNI机制调用C/C++编写的本地方法来实现对硬件底层的访问。 - **...
php 取MAC地址,CPU序列号,硬盘序列号!!
在IT领域,尤其是在编程和自动化测试中,获取系统硬件信息是...通过学习和理解如何在LabVIEW中获取CPU序列号、硬盘序列号、BIOS版本号和网卡物理地址,开发者可以增强自己在系统监控、设备管理和故障排查等方面的能力。
在开发基于全志A40I的系统时,有时我们需要获取CPU的序列号或者固化在硬件中的MAC地址,这对于设备的身份识别、安全性和个性化设置非常重要。 在描述中提到的"全志A40I获取CPU序列号固化MAC地址源码",这通常涉及到...
非常实用的C#读取CPU序列号、网卡的mac地址,轻松获取
得到机器的MAC,硬盘序列序列号和IP地址 public static void main(String[] args) ...{ String osName = System.getProperty("os.name"); StringBuffer systemPathBuff = new StringBuffer(""); if (osName.index...