在发布新版的MYPM时,加密要用到相关硬件信息,于是写了下面的测试类
运行main 打印信息如下图
需要引用的包sigar-1.6.3.jar
及相关动态库 测试时我加载了sigar自带所有动态库
详见main方法内
package cn.com.mypm.common.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.SigarLoader;
import org.hyperic.sigar.cmd.Shell;
import org.hyperic.sigar.cmd.SigarCommandBase;
public class CpuInfo extends SigarCommandBase {
public boolean displayTimes = true;
public CpuInfo(Shell shell) {
super(shell);
}
public CpuInfo() {
super();
}
public String getUsageShort() {
return "Display cpu information";
}
private void output(CpuPerc cpu) {
println("User Time....." + CpuPerc.format(cpu.getUser()));
println("Sys Time......" + CpuPerc.format(cpu.getSys()));
println("Idle Time....." + CpuPerc.format(cpu.getIdle()));
println("Wait Time....." + CpuPerc.format(cpu.getWait()));
println("Nice Time....." + CpuPerc.format(cpu.getNice()));
println("Combined......" + CpuPerc.format(cpu.getCombined()));
println("Irq Time......" + CpuPerc.format(cpu.getIrq()));
if (SigarLoader.IS_LINUX) {
println("SoftIrq Time.." + CpuPerc.format(cpu.getSoftIrq()));
println("Stolen Time...." + CpuPerc.format(cpu.getStolen()));
}
println("");
}
public void output(String[] args) throws SigarException {
org.hyperic.sigar.CpuInfo[] infos = this.sigar.getCpuInfoList();
CpuPerc[] cpus = this.sigar.getCpuPercList();
org.hyperic.sigar.CpuInfo info = infos[0];
long cacheSize = info.getCacheSize();
println("Vendor........." + info.getVendor());
println("Model.........." + info.getModel());
println("Mhz............" + info.getMhz());
println("Total CPUs....." + info.getTotalCores());
if ((info.getTotalCores() != info.getTotalSockets()) || (info.getCoresPerSocket() > info.getTotalCores())) {
println("Physical CPUs.." + info.getTotalSockets());
println("Cores per CPU.." + info.getCoresPerSocket());
}
if (cacheSize != Sigar.FIELD_NOTIMPL) {
println("Cache size...." + cacheSize);
}
println("");
if (!this.displayTimes) {
return;
}
for (int i = 0; i 0)
sb.append("第一个网卡号="+sigar.getNetInterfaceConfig(interfaces[0]).getHwaddr());
org.hyperic.sigar.FileSystem[] filesystems = sigar.getFileSystemList();
if(filesystems!=null || filesystems.length>0)
sb.append("\n"+"硬盘第一个分区的卷标="+getHDSerial(filesystems[1].getDevName()));
System.out.println(sb.toString());
}
public static void main(String[] args) throws Exception {
//先加载siga动太库在不同的平台只要加载特定的动态库,这里我就全加载不区分了
//在IDE环境中,可以不加载动态库 设置natinve lib patch location 既可
File nativeDir = new File("E:\\mypm10_new\\mypmdoc\\WebRoot\\WEB-INF\\native");
File[] libs = nativeDir.listFiles();
for (int i = 0; i
- 大小: 27.8 KB
分享到:
相关推荐
在C#编程中,获取计算机硬件的详细信息是常见的需求,比如网卡MAC地址、主板信息、CPU序列号以及硬盘卷标等。这些信息对于软件的授权验证、系统监控或者故障排查都非常重要。下面我们将详细讲解如何使用C#来获取这些...
在IT领域,获取计算机硬件的信息,如CPU序列号和硬盘卷标,是常见的系统管理和故障排查操作。这些信息对于诊断问题、验证硬件合法性以及软件授权等具有重要意义。下面将详细介绍如何获取这些信息,并探讨相关技术。 ...
本主题涉及的是如何使用C++来获取硬盘的相关信息,包括硬盘序列号、驱动类型以及卷标。这些信息在系统管理和软件开发中非常有用,例如在数据恢复、系统监控或硬件认证场景下。 首先,我们需要理解硬盘的基本概念。...
本文将详细讲解如何利用C++在Windows系统上获取CPU使用率、硬盘信息、用户信息、IP地址、MAC地址、系统版本、开机时间和网络速度等关键数据。 首先,获取CPU使用率通常涉及使用Windows API中的性能计数器功能。`pdh...
通常,需要使用如`RegRead` API函数来读取注册表中的相关信息。例如,可以在`HKEY_LOCAL_MACHINE\Hardware\Description\System\BIOS`下的`SystemSerialNumber`键中找到主板序列号。 ```vb Private Declare Function...
在Windows操作系统中,硬盘卷标是用户为区分不同硬盘分区而设置的个性化名称,而序列号则是硬盘制造商分配给每个硬盘的独特标识,通常用于识别和追踪硬件。 "硬盘卷标序列号修改工具"是一款专门针对这一需求设计的...
它包含了一套用Delphi编程语言编写的源代码,能够帮助开发者获取电脑的逻辑硬盘号、物理硬盘号、CPU序列号以及BIOS编号等关键信息。 首先,让我们深入理解这些概念: 1. **逻辑硬盘号**:也称为卷标或卷ID,是操作...
摘要:VB源码,系统相关,硬盘,卷标 VB编写的一个与硬盘属性信息读取的小程序,硬盘信息的显示与卷标的设定,调用GetVolumeInformation函数,获得所选盘符的卷标、分区格式信息,变量i的值在大写字母A到大写字母Z...
获取硬盘物理序列号的方法多种多样,包括使用命令行工具如Windows的`diskpart`或Linux的`hdparm`,或者使用专门的硬件信息检测软件。例如,`Hardware_IDExtractor.exe`可能就是一个这样的工具,它能提取并显示计算机...
在IT行业中,机器码通常指的是计算机硬件的唯一标识,它基于CPU、硬盘等硬件信息生成。这个"C#根据CPU硬盘获取机器码源码"的项目是关于如何在C#编程环境中,通过读取系统硬件信息来创建一个独特的标识符,这在软件...
本压缩包"VC 枚举(获取)系统硬件信息.rar"包含了实现这一功能的源码,主要关注声卡、显卡、CPU、内存、键盘、总线设备、硬盘和主板等硬件组件的信息获取。 首先,我们要讨论的是CPU信息的获取。在Windows系统中,...
在IT领域,获取计算机硬件和系统信息是常见需求,其中包括CPU ID、MAC地址、硬盘分区ID和硬盘分区GUID。这些信息对于系统管理、故障排查、软件授权和安全防护等方面都有重要作用。下面将详细讲解这些概念及其获取...
以上就是如何使用DLL封装和调用读取计算机IP地址、计算机名及硬盘信息的方法。在实际应用中,需要注意错误处理、内存管理和跨平台兼容性等问题。通过这种方式,开发者可以轻松地在各种应用程序中复用这些功能,提高...
在计算机硬件管理和软件开发领域,了解如何通过编程手段获取硬盘的卷标、序列号及文件系统类型是非常重要的技能之一。这些信息对于诊断问题、进行系统配置以及实现某些特定功能(如磁盘管理工具)时非常有用。本文将...
例如,可以创建一个`THardwareInfo`类,包含获取CPU、内存、硬盘、显卡等方法,使得在程序中调用这些硬件信息变得简单。 需要注意的是,进行硬件信息获取时应确保权限足够,并处理可能的异常情况,如API调用失败或...
与分区号不同,分区号是指硬盘上逻辑存储区域的标识,一个硬盘可以有多个分区,每个分区都有自己的卷标和驱动器字母,但只有一个序列号。 在软件加密领域,硬盘序列号可以作为软件授权验证的一个因素。通过将软件...
方便修改硬盘分区序列号,win10可用。
本压缩包“获得主板ID,硬盘物理ID,网卡物理地址的DLL.rar”提供了DLL动态链接库文件,用于帮助程序员或系统管理员便捷地获取这些关键硬件信息。 首先,我们来详细了解每个硬件标识: 1. **主板ID**:主板ID通常是...