`

JAVA获取mac地址和cpu id

 
阅读更多
JAVA获取mac地址和cpu id(windows和linux)

    public class HardwareUtil { 
     
        /**
         * Return Opertaion System Name;
         * 
         * @return os name.
         */ 
        public static String getOsName() { 
            String os = ""; 
            os = System.getProperty("os.name"); 
            return os; 
        } 
     
        /**
         * Returns the MAC address of the computer.
         * 
         * @return the MAC address
         */ 
        public static String getMACAddress() { 
            String address = ""; 
            String os = getOsName(); 
            if (os.startsWith("Windows")) { 
                try { 
                    String command = "cmd.exe /c ipconfig /all"; 
                    Process p = Runtime.getRuntime().exec(command); 
                    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
                    String line; 
                    while ((line = br.readLine()) != null) { 
                        if (line.indexOf("Physical Address") > 0) { 
                            int index = line.indexOf(":"); 
                            index += 2; 
                            address = line.substring(index); 
                            break; 
                        }else  if (line.indexOf("物理地址") > 0) { 
                            int index = line.indexOf(":"); 
                            index += 2; 
                            address = line.substring(index); 
                            break; 
                        } 
                    } 
                    br.close(); 
                    return address.trim(); 
                } catch (IOException e) { 
                } 
            } else if (os.startsWith("Linux")) { 
                String command = "/bin/sh -c ifconfig -a"; 
                Process p; 
                try { 
                    p = Runtime.getRuntime().exec(command); 
                    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
                    String line; 
                    while ((line = br.readLine()) != null) { 
                        if (line.indexOf("HWaddr") > 0) { 
                            int index = line.indexOf("HWaddr") + "HWaddr".length(); 
                            address = line.substring(index); 
                            break; 
                        } 
                    } 
                    br.close(); 
                } catch (IOException e) { 
                } 
            } 
            address = address.trim(); 
            return address; 
        } 
         
         
          /**
         * 获取CPU号,多CPU时,只取第一个
         * @return
         */ 
        public static String getCPUSerial() { 
            String result = ""; 
            String os = getOsName(); 
            if (os.startsWith("Windows")) { 
            try { 
                File file = File.createTempFile("tmp", ".vbs"); 
                file.deleteOnExit(); 
                FileWriter fw = new java.io.FileWriter(file); 
     
                String vbs = "On Error Resume Next \r\n\r\n" + "strComputer = \".\"  \r\n" 
                        + "Set objWMIService = GetObject(\"winmgmts:\" _ \r\n" 
                        + "    & \"{impersonationLevel=impersonate}!\\\\\" & strComputer & \"\\root\\cimv2\") \r\n" 
                        + "Set colItems = objWMIService.ExecQuery(\"Select * from Win32_Processor\")  \r\n " 
                        + "For Each objItem in colItems\r\n " + "    Wscript.Echo objItem.ProcessorId  \r\n " 
                        + "    exit for  ' do the first cpu only! \r\n" + "Next                    "; 
     
                fw.write(vbs); 
                fw.close(); 
                Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath()); 
                BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
                String line; 
                while ((line = input.readLine()) != null) { 
                    result += line; 
                } 
                input.close(); 
                file.delete(); 
            } catch (Exception e) { 
                e.fillInStackTrace(); 
            } 
            }else if (os.startsWith("Linux")) { 
                String CPU_ID_CMD = "dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}'"; 
                 Process p; 
                 try { 
                     p = Runtime.getRuntime().exec(new String[]{"sh","-c",CPU_ID_CMD});//管道 
                     BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
                     String line; 
                     while ((line = br.readLine()) != null) { 
                             result += line; 
                             break; 
                     } 
                     br.close(); 
                 } catch (IOException e) { 
                 } 
            } 
            if (result.trim().length() < 1 || result == null) { 
                result = "无CPU_ID被读取"; 
            } 
            return result.trim(); 
        } 
         
     
         
        /**
         * Main Class.
         * 
         * @param args
         * @throws NoSuchPaddingException 
         * @throws NoSuchAlgorithmException 
         */ 
        public static void main(String[] args) throws Exception { 
     
            String macAddress=HardwareUtil.getMACAddress(); 
            String cpuSerial=HardwareUtil.getCPUSerial(); 
            String test =macAddress+"@"+cpuSerial; 
     
            
             
           } 
分享到:
评论

相关推荐

    java得到机器的MAC,硬盘序列序列号和IP地址

    得到机器的MAC,硬盘序列序列号和IP地址 public static void main(String[] args) ...{ String osName = System.getProperty("os.name"); StringBuffer systemPathBuff = new StringBuffer(""); if (osName.index...

    java读取服务器硬件信息(windowx+linux+Mac OS)

    在Java编程中,读取服务器硬件信息是一项重要的任务,尤其对于跨平台的应用程序来说,能够兼容Windows、Linux和Mac OS等不同操作系统是必不可少的。本文将深入探讨如何使用Java来获取这些不同系统的硬件信息。 首先...

    根据mac地址生成服务器唯一机器码

    这个jar包可能封装了获取MAC地址、处理和生成机器码的逻辑,以及可能的授权验证机制。开发者可以将其引入项目中,通过调用相应的API来实现服务器的授权和注册功能。 总的来说,基于MAC地址生成服务器唯一机器码是一...

    Android获取Mac地址

    在Android系统中,获取设备的Mac地址是一项常见的需求,特别是在设备标识、网络连接管理和蓝牙通信等场景下。然而,由于隐私保护政策的变化,Android对于获取Mac地址的方式进行了限制,使得这个过程比以前复杂了一些...

    Java-HardwareIDUtils.rar_BIOS_Java-api-mac_java hardware id_java

    设计支持windows、linux、OS等操作系统平台,目前已经支持windows平台,可根据思路自行补充linux和OS平台下的一些api,取得机器硬件指纹(cpu 序列号、mac地址、BIOS序列号、硬盘ID),主要用作软件授权使用对象的...

    C#程序Mac地址AES加密及解密

    通过这个小工具,用户能够方便地获取Mac地址并使用AES加密技术进行保护,确保Mac地址不会被轻易暴露,从而提升了网络安全。这种加密方法在许多场景下都十分有用,比如在设备认证、网络通信或者敏感数据存储等方面。

    获取mac地址的代码

    Java提供了`java.net.NetworkInterface`类来获取网络接口的信息,包括MAC地址。 ```java import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; public class...

    java获取电脑信息demo

    对于网络信息,Java提供了一些内置类来获取IP地址、主机名等,例如`java.net.NetworkInterface`和`java.net.InetAddress`。但是,获取更详细的网络信息,如网卡速度、MAC地址等,可能需要通过JNA或JNI与操作系统底层...

    JAVA通过oshi获取系统和硬件信息

    本篇文章将详细讲解如何使用OSHI库来获取系统及硬件信息,并结合描述中的需求,探讨如何根据MAC地址、序列号和处理器ID生成加密字符串。 首先,引入OSHI库到项目中。通常,可以通过Maven或Gradle依赖管理工具添加...

    一个非常不错的用JAVA获得系统信息的包

    3. **网卡信息**:获取网络接口的状态,如IP地址、MAC地址、接收和发送的数据量等,这些数据对于网络诊断和流量监控很有价值。 4. **进程信息**:能够列出系统上的所有进程,获取它们的ID、内存占用、CPU使用率等,...

    CPU的访问信息。RAR

    总之,理解和掌握如何获取CPU的访问信息,包括其ID号和机器标识,是IT专业人士的基本技能之一。这不仅有助于更好地了解和利用硬件资源,也有助于解决和预防与硬件相关的问题。通过学习和使用各种工具,我们可以更...

    获取CPUID MAC编号,硬盘序列号的代码

    前段时间,公司让写一个授权文件,要求软件只能在某台及其上运行,只要脱离该机器,就不能运行,因此,我参考了获取CPUID、MACID和硬盘序列号的获取信息代码,将软件和这些进行加密绑定。感觉这些还是挺有用的,大家...

    获取硬盘唯一序列号和机器唯一id

    它可能包含CPU型号、主板序列号、MAC地址等信息,确保即使更换了部分硬件,机器码仍能保持不变。生成机器码的目的是为了软件授权,因为每个安装软件的设备都将拥有一个独特的ID,这有助于软件开发商限制软件的使用...

    web取PC设备ID

    2. **JavaScript API限制**:由于隐私和安全原因,JavaScript的标准API并不允许直接获取CPU ID、硬盘ID和MAC地址。这是为了防止恶意网站滥用这些信息侵犯用户隐私。然而,有些硬件信息可以通过浏览器API间接获取,如...

    java web在高并发和分布式下实现订单号生成唯一的解决方案

    在实现订单号生成唯一的解决方案中,我们需要获取线程ID、进程ID 和 MAC 地址等信息。下面是获取这些信息的代码: * 获取线程ID:`Thread.currentThread().getId()` * 获取进程ID:`ManagementFactory....

    获取电脑硬件的详细信息,与注册有关,物理地址,序列号

    获取MAC地址可以使用命令行(如Windows的`getmac`,Linux的`ifconfig`),或通过编程接口(如Java的`NetworkInterface`类)。 4. 电脑名称:电脑名称是操作系统中用于识别每台计算机的标识符,可以在网络环境中区分...

    基于Java的本地调用接口 JNative.zip

    3. **字段ID和方法ID**:通过JNIEnv,我们可以获取到Java字段或方法的唯一标识符,用于后续的访问操作。 4. **字符串和数组处理**:JNI提供了转换Java字符串到C字符串,以及处理Java数组的API。 四、JNI的优点与...

    基于java的sigar_mirror(系统信息收集API_Sigar).zip

    总的来说,"基于java的sigar_mirror(系统信息收集API_Sigar).zip"提供的Java版Sigar库是一个强大的工具,它使得Java开发者能够轻松地获取和分析操作系统的各种核心信息,从而更好地理解和管理运行环境。使用这个库,...

    获取设备参数

    - IP地址和子网掩码:通过`ifconfig`(Linux、Mac)或`ipconfig`(Windows)命令。 - 网络接口信息:`netstat`命令可以查看网络连接状态,`lsof`显示当前打开的网络连接。 - 在Java和Python中,`socket`库可以...

    show-busy-java-threads

    用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。 目前只支持Linux。原因是Mac、Windows的ps命令不支持列出进程的线程...

Global site tag (gtag.js) - Google Analytics