java获取硬盘ID以及MAC地址等唯一标识码(详解,测试通过)
来源:互联网 发布:运动控制仿真软件 编辑:程序博客网 时间:2024/05/16 10:43
为了达到软件注册,或者说软件和电脑绑定的目的,需要将电脑上的固定编号进行一系列的算法计算,并生成唯一和软件匹配的号码。
那么使用java如何达到这个目的呢?
通常做法都是通过java的Runtime来完成,通过 process的输入流,进行获取相关的信息。
下面列举具体的例子:
[java] view plaincopy
- 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( newInputStreamReader( -
p.getInputStream())); -
String line; -
while ((line null)= input.readLine()) != { -
result += line; -
-
} -
input.close(); -
} catch (Exception e) { -
e.printStackTrace(); -
} -
return result.trim(); -
} - }
2、MacUtils 获取MAC地址
[java] view plaincopy
- 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 null)= input.readLine()) != -
-
-
if (line.indexOf( "PhysicalAddress" )> 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、
[java] view plaincopy
- 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 { -
-
-
public static void main(String[] args) { -
// TODO Auto-generated method stub -
-
// -
System.out.println("***MAC地址***"); -
MacUtils.getMac(); -
// -
String sn = DiskUtils.getSerialNumber("C"); -
System.out.println("***硬盘编号***"); -
System.out.println(sn); -
-
} -
- }
4、执行结果(我电脑上有几个VPN,所以就有多个MAC;为了防止别人搞我的电脑,数字和字母用*号代替)
***MAC地址***
MAC address = [**-**-**-**-**-**]
MAC address = [**-**-**-**-**-**]
MAC address =[**-**-**-**-**-**]
MAC address = [**-**-**-**-**-**]
***硬盘编号***
1290******
1 0
- java获取硬盘ID以及MAC地址等唯一标识码(详解,测试通过)
- java获取硬盘ID以及MAC地址等唯一标识码
- java获取硬盘ID以及MAC地址
- [ios2] 获取mac地址 等唯一标识
- 获取mac地址和硬盘id编号
- C#获取计算机唯一标识CPUID,DISKID,MAC等
- unity3d 获取cpu序列号,硬盘ID,网卡MAC地址等硬件可用于加密
- 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
- 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
- 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
- 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
- java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)
- java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)
- 获取硬盘序列号以及mac地址
- c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息
- java 取cpuid、主板id、硬盘id、mac地址
- java 取cpuid、主板id、硬盘id、mac地址
- java 取cpuid、主板id、硬盘id、mac地址
- 写给自己的短文----感谢
- 代码整洁之道——有意义的命名(笔记)
- 《构建之法》中的例子
- VMware上安装Linux系统
- std::fstream
- java获取硬盘ID以及MAC地址等唯一标识码(详解,测试通过)
- POJ 2728 Desert King (最优比例生成树)
- TCP连接攻击
- 走遍世界 —— 阿拉伯联合酋长国
- 1035. Password (20)
- js 截取 URL中的文件名
- 利用php-cli和任务计划实现刷新token的功能
- 2017年 Android第三方库
- 低功耗蓝牙BLE之广播