Java提取用户电脑CPU编号和网卡编号


最近在做一个客户端监控的功能,需要提取用户电脑的CPU编号和网卡的编号,采集用户的登陆数据,据我所知道直接通过Java来调用操作系统的信息是非常困难的事情(我好像没有发现JavaAPI提供了这个功能),那这样的话只能通过JNI访问系统的信息了,不过有个SWT扩展的插件org.eclipse.swt.extension封装了调用DLL的JNI方法,主要是负责底层操作系统的方法,不过可能会对程序的跨平台性有点的影响,目前只能使用于Windows操作系统,使用方法很简单,接下来请看:

我们可以从这里下载这个插件,直接搜索 swt extension 就可以搜到,新建一个工程,比如名称叫org.vwpolo.extend.example,这里要新建成一个插件项目,如果新建成个简单的Java工程的时候会出现个找不到类的异常java.lang.NoClassDefFoundError: org/eclipse/swt/internal/win32/OS,项目新建好了后我们可以写个类来测试一下,我写的测试类为:

1 import org.eclipse.swt.internal.extension.Extension;
2
3 /**
4 *
获得操作系统的信息  
5 * @author 刘尧兴
6 * <p>2009-6-3</p>
7 */
8 public class GetOSInfoApp {
9   public static void main(String[] args) {
10      System.out.println("
计算机名称: "+Extension.GetComputerName());
11      System.out.println("系统登陆帐号: "+Extension.GetUserName());
12      System.out.println("系统CPU编号: " + Extension.GetCPUID());
13      System.out.println("系统 MAC编号: " + getMacId());
14    }

         public static String getMacID() {
           int[] macs = Extension.GetMACAddress(0);
           StringBuffer stringBuffer = new StringBuffer();
         for (int i = 0; i < macs.length; i++) {
          stringBuffer.append(getHexString(macs[i], 2).toUpperCase());
           if (i != macs.length - 1)
            stringBuffer.append("-");
        }
        return stringBuffer.toString();
15 }
   /**
    *
将十进制转换成十六进制 。
    * @author
刘尧兴
    * @param value
    * @param length
    * @return String
   */
   public static String getHexString(int value, int length) {
       String valueStr = Integer.toHexString(value);
       if(valueStr.length() == length)
         return valueStr;
       if(valueStr.length() > length)
         return valueStr.substring(0, length);
       valueStr = "0000"+valueStr;
       return valueStr.substring(valueStr.length()-length);
     }
16

这个类功能相当的简单,我的项目的文件结构为

  • 1
  • 2
  • 下一页

相关内容