java如何能读取Win7的mac地址 java如何能读取Win7的mac地址??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在程序中运行一个外部命令,将该命令的运行结果作为一个流(Stream),读取并分析之,进而实现获取MAC地址。public class ReadMAC { public static String physicalAddress = "read MAC error!"; public ReadMAC() { } public static String checkPhysicalAddress() { try { String line; Process process = Runtime.getRuntime().exec("cmd /c ipconfig /all"); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream())); while ((line = bufferedReader.readLine()) != null) { if (line.indexOf("Physical Address. . . . . . . . . :") != -1) { if (line.indexOf(":") != -1) { physicalAddress = line.substring(line.indexOf(":") + 2); break; // 找到MAC,推出循环 } } } process.waitFor(); } catch (Exception e) { e.printStackTrace(); } return physicalAddress; } public static void main(String[] args) { System.out.println("本机的MAC地址是: " + ReadMAC.checkPhysicalAddress()); }} 有java的API吗?读取XP是有API函数的?读取WIN7的时候,这个API就不管用了 你们玩的都是最新的,嘿嘿..我out了 哦,现在看来JDK还真好像不支持这个WIN7还。 java 不能获得 MAC 地址 public void getOsType() { OStype = System.getProperty("os.name").toLowerCase(); SystemMac(); } private void SystemMac() { BufferedReader bufferedReader = null; Process process = null; mac = new String[10]; try { int count = 0; if (OStype.indexOf("window")>-1) { process = Runtime.getRuntime().exec("getmac /fo csv /nh"); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; while ((line = bufferedReader.readLine()) != null) { String[] result = line.split(","); if (result[0].indexOf("-") < 0) continue; mac[count] = result[0].replace('"', ' ').trim(); count++; } } else { process = Runtime.getRuntime().exec("ip link show eth0 "); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; int index = -1; while ((line = bufferedReader.readLine()) != null) { index = line.toLowerCase().indexOf("link/ether"); int endindex = line.toLowerCase().indexOf("brd"); if (index >= 0) { mac[count] = line.substring(index + "link/ether".length() + 1, endindex).trim(); } count++; } } } catch (IOException e) { logger.error("CopyRight error:", e); } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (IOException e1) { logger.error("Mac error:", e1); } bufferedReader = null; process = null; } }参考一下 java可以获得调用XP系统API取得吧 如果能调用 XP 系统的 API 的话,那肯定也能调用 Windows 7 系统的 API,我想微软基本上不会把这种很底层、很核心的函数给改掉。 为什么这个不是死锁啊,哪里写错了 急! 求! 如何用java实现 用鼠标画矩形框 放大缩小照片的例子? 今天面试不理想,有些面试题,大家给点答案吧 客户端的socket如何关闭才正确哪? 如何设置jtable的字体 关于awt的问题 TABLE问题 javabean 和applet ????区别 请问我用程序如何编辑Adobe Acrobat 5.0的pdf文件(生成报表)啊?或者如何才能将已生成的execl报表转换成pdf格式? UI 能不能搞个硬盘版 jvm ACTION中if语句不能识别
public static String physicalAddress = "read MAC error!"; public ReadMAC() {
} public static String checkPhysicalAddress() {
try {
String line;
Process process = Runtime.getRuntime().exec("cmd /c ipconfig /all");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while ((line = bufferedReader.readLine()) != null) {
if (line.indexOf("Physical Address. . . . . . . . . :") != -1) {
if (line.indexOf(":") != -1) {
physicalAddress = line.substring(line.indexOf(":") + 2);
break; // 找到MAC,推出循环
}
}
}
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
return physicalAddress;
} public static void main(String[] args) {
System.out.println("本机的MAC地址是: " + ReadMAC.checkPhysicalAddress());
}
}
public void getOsType() { OStype = System.getProperty("os.name").toLowerCase(); SystemMac(); } private void SystemMac() { BufferedReader bufferedReader = null; Process process = null; mac = new String[10]; try { int count = 0; if (OStype.indexOf("window")>-1) { process = Runtime.getRuntime().exec("getmac /fo csv /nh"); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; while ((line = bufferedReader.readLine()) != null) { String[] result = line.split(","); if (result[0].indexOf("-") < 0) continue; mac[count] = result[0].replace('"', ' ').trim(); count++; } } else { process = Runtime.getRuntime().exec("ip link show eth0 "); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; int index = -1; while ((line = bufferedReader.readLine()) != null) { index = line.toLowerCase().indexOf("link/ether"); int endindex = line.toLowerCase().indexOf("brd"); if (index >= 0) { mac[count] = line.substring(index + "link/ether".length() + 1, endindex).trim(); } count++; } } } catch (IOException e) { logger.error("CopyRight error:", e); } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (IOException e1) { logger.error("Mac error:", e1); } bufferedReader = null; process = null; } }参考一下
如果能调用 XP 系统的 API 的话,那肯定也能调用 Windows 7 系统的 API,我想微软基本上不会把这种很底层、很核心的函数给改掉。