java如何能读取Win7的mac地址???

解决方案 »

  1.   

    在程序中运行一个外部命令,将该命令的运行结果作为一个流(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());
    }
    }
      

  2.   

    有java的API吗?读取XP是有API函数的?读取WIN7的时候,这个API就不管用了
      

  3.   

    你们玩的都是最新的,嘿嘿..我out了
      

  4.   

    哦,现在看来JDK还真好像不支持这个WIN7还。
      

  5.   

    java 不能获得 MAC 地址
      

  6.   


    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; } }参考一下
      

  7.   

    java可以获得调用XP系统API取得吧
      

  8.   


    如果能调用 XP 系统的 API 的话,那肯定也能调用 Windows 7 系统的 API,我想微软基本上不会把这种很底层、很核心的函数给改掉。