用户操作
[即时聊天] [发私信] [加为好友]
党彦博ID:bobyisland
971次访问,排名2万外,好友6人,关注者7人。
热衷于微软技术
bobyisland的文章
原创 1 篇
翻译 0 篇
转载 1 篇
评论 24 篇
最近评论
文章分类
收藏
    相册
    Technology
    Window 中窗口的层次关系以及窗口的属性
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 用java获得windows或者linux下网卡地址的小程序收藏

    新一篇: 上下拉电阻的作用 | 

       刚找了一份工作,经理就要让我编一个产生软件注册码的程序.要命的是我从来也没编过这方面的东东,一直感觉注册码这个东西很神秘,不料上班第一天就碰上这种事.无奈.上网查找相关资料.大致了解了一下.总之就是先要获得某些硬件信息,然后加密.

       网上找了好多相关资料后,我就用VC6.0遍了一个能得到网卡地址和硬盘物理序列号的程序,本打算用jni调用,可后来发现IDE硬盘物理序列号只能在管理员权限下得到.唉~~~白忙活老半天.

      后来请示经理后,经理让我用MAC Address就可以了.所以我就参考前辈们给的一些代码,写了下面这个小程序

    基本思路就是调用操作系统命令。加密算法偶就不贴出来啦~~~~

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.lang.*;

    //判断操作系统类型
    class GetOSname
    {
     public String GetOperateSysName()
     {
      os = System.getProperty("os.name");//得到操作系统类型
      return os;
     }
     
     /*public static void main(String[] args)
     {
      GetOSname osname = new GetOSname();
      String name = osname.GetOperateSysName();
     }*/
     private String os;
    }

    //得到网卡信息
    public class GetMacAddress
    {
     public String GetMacAddress()
     {
      String osname = "";
      GetOSname getosname = new GetOSname();
      osname = getosname.GetOperateSysName();
      if(osname == null)
      {
       System.out.println("Can't get Opreate System Property");
       System.exit(0);
      }
      if(osname.startsWith("Windows"))
      {
       try
                {
                    command = "ipconfig /all";//定义系统命令
                    p = Runtime.getRuntime().exec(command);//执行命令
                    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;
                        }
                    }
                    br.close();
                    return address.trim();
                 }
                 catch (IOException e) {}
      }
      else  //linux下分析流          
            {
             if(osname.startsWith("Linux"))
             {
              try
              {
                  command = "ifconfig";
                  p = Runtime.getRuntime().exec(command);
                  br = new BufferedReader(new InputStreamReader(p.getInputStream()));
                  String line;
                  while((line = br.readLine()) != null)
                  {
                   if(line.indexOf("HWadd") > 0)
                   {
                    int index = line.lastIndexOf(":");
                    index += 2;
                    address = line.substring(index);
                    break;
                   }
                   }
                   br.close();
                        return address.trim();
              }
              catch(IOException e){}
                 //System.out.println("Linux");
             }
            }
      return address;
     }
     public static void main(String[] args)
     {
      GetMacAddress getmacaddress = new GetMacAddress();
      String macadd;
      macadd = getmacaddress.GetMacAddress();
      System.out.println(macadd);
     }
     private String address = "";
     private String command = "";
     private Process p = null;
        private BufferedReader br;
    }

    上面linux的那一部分我还没有调试过,其他都可以运行的.

    在此特别感谢那些给我帮助的前辈大侠们,好多代码都是他们贴出来的,我只不过做了一点点工作.

    唉,能骗经理就行了~~~~  大家祝福我有一天也能成为大侠吧,呵呵

    发表于 @ 2006年03月17日 14:27:00|评论(loading...)|编辑

    新一篇: 上下拉电阻的作用 | 

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 党彦博