`
chengyue2007
  • 浏览: 1488731 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)(转)

    博客分类:
  • java
 
阅读更多

http://blog.csdn.net/flyingcloude/article/details/9417825

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
 
public class HardWareUtils {
 
    /**
     * 获取主板序列号
     *
     * @return
     */
    public static String getMotherboardSN() {
        String result = "";
        try {
            File file = File.createTempFile("realhowto"".vbs");
            file.deleteOnExit();
            FileWriter fw = new java.io.FileWriter(file);
 
            String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
                    "Set colItems = objWMIService.ExecQuery _ \n"
                    "   (\"Select * from Win32_BaseBoard\") \n"
                    "For Each objItem in colItems \n"
                    "    Wscript.Echo objItem.SerialNumber \n"
                    "    exit for  ' do the first cpu only! \n" "Next \n";
 
            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();
        catch (Exception e) {
            e.printStackTrace();
        }
        return result.trim();
    }
 
    /**
     * 获取硬盘序列号
     *
     * @param drive
     *            盘符
     * @return
     */
    public static String getHardDiskSN(String drive) {
        String result = "";
        try {
            File file = File.createTempFile("realhowto"".vbs");
            file.deleteOnExit();
            FileWriter fw = new java.io.FileWriter(file);
 
            String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
                    "Set colDrives = objFSO.Drives\n"
                    "Set objDrive = colDrives.item(\""
                    + drive
                    "\")\n"
                    "Wscript.Echo objDrive.SerialNumber"// see note
            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();
        catch (Exception e) {
            e.printStackTrace();
        }
        return result.trim();
    }
 
    /**
     * 获取CPU序列号
     *
     * @return
     */
    public static String getCPUSerial() {
        String result = "";
        try {
            File file = File.createTempFile("tmp"".vbs");
            file.deleteOnExit();
            FileWriter fw = new java.io.FileWriter(file);
            String vbs = "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
                    "Set colItems = objWMIService.ExecQuery _ \n"
                    "   (\"Select * from Win32_Processor\") \n"
                    "For Each objItem in colItems \n"
                    "    Wscript.Echo objItem.ProcessorId \n"
                    "    exit for  ' do the first cpu only! \n" "Next \n";
 
            // + "    exit for  \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();
        }
        if (result.trim().length() < 1 || result == null) {
            result = "无CPU_ID被读取";
        }
        return result.trim();
    }
 
    /**
     * 获取MAC地址
     */
    public static String getMac() {
        String result = "";
        try {
 
            Process process = Runtime.getRuntime().exec("ipconfig /all");
 
            InputStreamReader ir = new InputStreamReader(
                    process.getInputStream());
 
            LineNumberReader input = new LineNumberReader(ir);
 
            String line;
 
            while ((line = input.readLine()) != null)
 
                if (line.indexOf("Physical Address") > 0) {
 
                    String MACAddr = line.substring(line.indexOf("-") - 2);
 
                    result = MACAddr;
 
                }
 
        catch (java.io.IOException e) {
 
            System.err.println("IOException " + e.getMessage());
 
        }
        return result;
    }
 
    public static void main(String[] args) {
        System.out.println("CPU  SN:" + HardWareUtils.getCPUSerial());
        System.out.println("主板  SN:" + HardWareUtils.getMotherboardSN());
        System.out.println("C盘   SN:" + HardWareUtils.getHardDiskSN("c"));
        System.out.println("MAC  SN:" + HardWareUtils.getMac());
    }
 
}

 Linux

命令:

0、查看CPUID:dmidecode -t processor | grep 'ID'

1、查看服务器型号:dmidecode | grep 'Product Name'

2、查看主板的序列号:dmidecode |grep 'Serial Number'

3、查看系统序列号:dmidecode -s system-serial-number

4、查看内存信息:dmidecode -t memory

5、查看OEM信息:dmidecode -t 11

分享到:
评论

相关推荐

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

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

    Qt之获取Linux网卡MAC、Cpu的ID、硬盘ID

    在开发基于Qt的应用程序时,有时需要获取运行系统的硬件信息,比如网卡的MAC地址、CPU ID以及硬盘ID。这些信息对于系统识别、设备管理、软件授权等方面都可能至关重要。以下将详细介绍如何在Linux环境下,利用Qt库和...

    获取cpuid mac 硬盘分区ID 硬盘分区GUID

    在IT领域,获取计算机硬件和系统信息是常见需求,其中包括CPU ID、MAC地址、硬盘分区ID和硬盘分区GUID。这些信息对于系统管理、故障排查、软件授权和安全防护等方面都有重要作用。下面将详细讲解这些概念及其获取...

    系统信息,CPUID,硬盘ID,网卡MAC地址的VS2008实现(非WMI)

    本篇文章将详细探讨如何使用Visual Studio 2008(VS2008)来实现获取系统信息,包括CPUID、硬盘ID和网卡MAC地址的功能。我们将主要关注提供的两个源文件:`GetSystemInfo.cpp` 和 `GetSystemInfo.h`。 首先,CPUID...

    vc获取机器指纹(CPU ID、硬盘ID、MAC地址、BIOS)

    "VC获取机器指纹(CPU ID、硬盘ID、MAC地址、BIOS)"这个项目涉及到使用Visual C++(VC)编程语言来获取计算机的一些独特硬件标识,这些标识可以组合成一个唯一的“指纹”。以下是关于这些硬件标识及其获取方法的...

    C++ 获取主板CPU,硬盘等代码

    总之,通过C++获取主板、CPU、硬盘和MAC地址等硬件信息是一项涉及操作系统接口和硬件规范的任务,需要开发者具备扎实的编程基础和系统级知识。以上提到的方法和技巧只是基础,实际的代码实现会更复杂,可能还需要...

    C语言获取CPUID和MAC地址

    本篇文章将深入探讨如何使用C语言来获取CPU的标识符(CPUID)以及网络适配器的物理地址(MAC地址)。C语言作为底层编程的基础,其简洁且强大的特性使得它成为获取这些硬件信息的理想选择。 首先,我们要理解CPUID。...

    Java & JNI 获取CPUID

    本项目通过Java与JNI(Java Native Interface)结合,实现了一个能够从Java程序中获取CPUID的功能。 首先,让我们了解一下JNI。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。通过JNI,...

    vb.net获取cpuID 网卡地址 主板id 硬盘id 内存大小 电脑名称信息

    亲测可用,获取主板,硬盘,CPU,网卡地址等序号,另外还可以获取内存大小,系统登录用户名称,电脑的计算机名称。每个按钮一个功能,信息现在文本框内。源码直接可用,编写软件vb.net 2010 适合新手。

    VB源码 读取CPUID 网卡硬盘ID

    本主题聚焦于如何利用VB源码来读取计算机的关键硬件标识,包括CPUID、网卡ID和硬盘ID。这些信息在系统管理和软件授权等方面具有重要意义。 首先,CPUID(CPU Identifier)是处理器的一种特性,它提供了关于CPU制造...

    获取电脑信息(磁盘容量,Mac地址,CpuID,主板ID等)

    C# WinForm,获取磁盘容量,Mac地址,CpuID,主板ID,当前登录用户名,计算机名,桌面路径(software/microsoft/windows/currentversion/explorer/shell folders 注册表该路径下的相关信息)等、三层架构、单列,可...

    c语言获取 CPU序列号(CPUID) 硬盘序列号 (vs2010工程)支持64位编译

    在IT领域,获取计算机硬件的信息,如CPU序列号和硬盘序列号,对于系统管理、软件激活、设备识别等任务至关重要。本项目是一个基于C语言的VS2010工程,特别之处在于它不仅适用于32位环境,还支持64位编译。以下是关于...

    VC++获取网卡MAC、硬盘序列号、CPU ID、BIOS编号

    VC++获取网卡MAC、硬盘序列号、CPU ID、BIOS编号 VC++获取网卡MAC、硬盘序列号、CPU ID、BIOS编号是计算机系统中获取系统特征码的方法。系统特征码是指网卡MAC、硬盘序列号、CPU ID、BIOS编号等信息,这些信息可以...

    qt写的跨平台读取CPUID MAC的加密程序

    标题中的“qt写的跨平台读取CPUID MAC的加密程序”指的是使用Qt库开发的一款软件,该软件的主要功能是获取计算机的CPU标识符(CPUID)和物理地址(MAC地址),并结合加密算法来实现安全相关的操作。Qt是一个C++框架...

    C++获取硬盘序列号和CPUID代码

    测试可用的获取硬盘序列号和CPUID的C++代码,包含windows和linux操作系统。 注意:windows vista以上系统需要管理员权限才能获取到硬盘序列号; 做了raid0磁盘阵列的硬盘也不能获取到硬盘序列号,欢迎有相关技术的...

    vb.net获取硬盘ID厂商信息CPUID

    在VB.NET中,我们可以利用` ManagementObjectSearcher `类来查询` Win32_DiskDrive ` WMI 类(Windows Management Instrumentation)来获取硬盘ID。以下是一个简单的示例: ```vb.net Imports System.Management ...

    获取CPUID,三种方法实现

    在计算机硬件领域,CPUID(CPU Identification)是一个重要的指令,用于获取处理器的标识信息,包括制造商、型号、特征等。本文将详细介绍三种方法来获取CPUID,并通过C++类实现,同时结合VC(Visual C++)工程进行...

    wmi应用(用于获取CPUID和硬盘ID)

    【标题】"wmi应用(用于获取CPUID和硬盘ID)" 涉及到的是Windows Management Instrumentation(WMI)技术的应用,它主要用于在Windows操作系统中获取计算机硬件和软件的相关信息,例如CPU标识符(CPUID)和硬盘的唯一...

    获取硬盘、主板、CPU、网卡MAC地址等硬件序列号信息的c++/vc6.0GetHDSerial源码

    在这个项目"获取硬盘、主板、CPU、网卡MAC地址等硬件序列号信息的c++/vc6.0 GetHDSerial源码"中,开发者使用了C++和VC6.0(Visual C++ 6.0)编译器,提供了一套完整的源代码解决方案,用于获取计算机硬件的关键识别...

    获取cpuid的c++代码

    c++获取cpuid,嵌入汇编语言 xor eax,eax cpuid mov dword ptr vendor_id,ebx mov dword ptr vendor_id[+4],edx mov dword ptr vendor_id[+8],ecx

Global site tag (gtag.js) - Google Analytics