java获取硬盘ID以及MAC地址

http://blog.csdn.net/coolwzjcool/article/details/6698327

为了达到软件注册,或者说软件和电脑绑定的目的,需要将电脑上的固定编号进行一系列的算法计算,并生成唯一和软件匹配的号码。

那么使用java如何达到这个目的呢?

通常做法都是通过java的Runtime来完成,通过 process的输入流,进行获取相关的信息。

下面列举具体的例子:

1、DiskUtils 获取硬盘编号

import java.io.File;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;

class DiskUtils {
private DiskUtils() {
}

public static String getSerialNumber(String drive) {
String result = "";
try {
File file = File.createTempFile("damn", ".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();
}
}

2、MacUtils 获取MAC地址

import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class MacUtils {

public static void getMac(){
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);

System.out.println("MAC address = [" + MACAddr + "]");

}

} catch (java.io.IOException e) {

System.err.println("IOException " + e.getMessage());

}
}
}
3、 测试程序:

import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Vector;

public class TestMain {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

//****************获取MAC地址*****************//
System.out.println("***MAC地址***");
MacUtils.getMac();
//****************获取硬盘ID*****************//
String sn = DiskUtils.getSerialNumber("C");
System.out.println("***硬盘编号***");
System.out.println(sn);

}

}

时间: 2024-10-22 11:05:07

java获取硬盘ID以及MAC地址的相关文章

java获取当前计算机网卡MAC地址

package com.yjm.testmac; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Enumeration; public class MacTest { public static void main(String[] args)

java 获取访问者ip和mac地址

获取访问者ip,代码: <% String sip=""; try{ sip = (String)request.getRemoteAddr(); }catch(Exception e){ } %> 获取访问者mac地址,法是用UDP协议来发送查询mac指令然后返回值中解析mac.代码 <% String smac = ""; String sip = request.getHeader("x-forwarded-for");

如何使用Java代码获取Android移动终端Mac地址

快下班了,现在总结一下如何使用Java代码获取Android移动终端Mac地址: 通过设备开通WiFi连接获取Mac地址是最可取的,代码如下: /** * 设备开通WiFi连接,通过wifiManager获取Mac地址 * * @author 高焕杰 */ public static String getMacFromWifi(Context context){ ConnectivityManager connectivityManager = (ConnectivityManager) con

java获取客户端ID地址

转:http://zhenchengchagangzi.iteye.com/blog/1199300#bc2372048 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110 :2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的

Java/JSP获得客户端网卡MAC地址的三种方法解析

java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种. 1.通过命令方式,在客户端执行Ipconfig 等等.(java/jsp) 2.通过ActiveX的方法.(jsp) 3.通过向137的端口发送查询指令的方法.(java/jsp) 简介: 第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行.而且速度是这三种方法中最慢的一种. 代码如下: String sip=""; String smac=""; sip = requ

通过安卓应用获取任意蓝牙设备的MAC地址

最近做一个安卓应用,用蓝牙信号控制一台仪器,通过一个蓝牙转串口的装置,发送蓝牙信号,然后转换为串口命令发送给仪器.蓝牙装置如下: 在写安卓应用中的java代码时,如何获取这个蓝牙设备呢?BluetoothAdapter 的 getRemoteDevice(address) 方法可以通过MAC地址来获取蓝牙设备: BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 但问题来了,这个蓝牙设备的MAC地址是多少呢?

关于获取android6.0的mac地址

原文:http://blog.csdn.net/suziluo123/article/details/51382410 最近接触6.0,发现使用单纯的wifiManager.getConnectionInfo().getMacAddress();方法获取不到MAc地址.后来Google一下发现 Google对硬件信息的访问,其管控更加严格.SD 卡的读写,除了权限声明之外,还应该动态请求,否则就会被禁止.至于 MAC 网络地址的获取,相应的 API 返回的最新结果都是 02:00:00:00:0

Java获取电脑IP、MAC、各种版本

Java代码获取电脑IP.MAC.各种版本 package com.rapoo.middle.action; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.ArrayList; import java

C#获取局域网IP、MAC地址和端口的初学

首先非常感谢Melou的http://www.cnblogs.com/luoht/archive/2009/12/18/1627431.html的随笔,对于初学C#的我,参考你的随笔对我的学习真是有莫大帮助. C#遍历局域网的几种方法: 1.微软社区上介绍了使用Active Directory 来遍历局域网 首先我们来了解DirectoryEntry类是一个什么类. 命名空间:  System.DirectoryServices程序集:  System.DirectoryServices(在 S