| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1397 人关注过本帖
标题:[求助]java能获得硬盘、cpu、网卡编号么,怎么获得
只看楼主 加入收藏
wangleifire
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-11-8
收藏
 问题点数:0 回复次数:7 
[求助]java能获得硬盘、cpu、网卡编号么,怎么获得

如题,曾经为做用java做到有关系统方面的东西而头痛,不过这次又要涉及到了,求助中!

搜索更多相关主题的帖子: cpu java 网卡 硬盘 
2007-03-27 13:57
支离破碎
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:737
专家分:0
注 册:2007-1-4
收藏
得分:0 
这个用JAVA应该不容易做到,不过可以用C/C++来做到,然后你再用JAVA的JNI来调用C/C++写的来取得

人生漂泊無依,有如浮萍菱花,隨水飄流,你会在我这里停留吗?
[url=http://51mynet.]http://51mynet.[/url]
2007-03-27 14:16
风月_无边
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:60
帖 子:2960
专家分:652
注 册:2007-1-19
收藏
得分:0 
系统软件方面的还差不多,硬件的太难了!

我的网站 http://www.
2007-03-27 17:44
wangleifire
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-11-8
收藏
得分:0 
谢谢,我知道怎么做了。
2007-03-27 17:45
风月_无边
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:60
帖 子:2960
专家分:652
注 册:2007-1-19
收藏
得分:0 
lz怎么做的,说来听听,学习一下

我的网站 http://www.
2007-03-27 17:54
ILoveMK
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:487
专家分:0
注 册:2007-2-12
收藏
得分:0 
用jni啊,我用jni写过一个任务管理器差不多就能实现楼主要求的这些功能~~

天下归心
2007-03-27 21:02
黄袖标
Rank: 4
等 级:贵宾
威 望:13
帖 子:676
专家分:0
注 册:2007-3-22
收藏
得分:0 
用java直接去读系统信息文件应该比较容易,实时的话,还得动点脑筋

我胡汉三又回来啦!物是人非啊,只有静夜思大大还在。
2007-03-28 13:10
wangleifire
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-11-8
收藏
得分:0 

网卡的可以直接做,看下面的代码,
package wanglei.zhangying;

import java.io.*;
import java.util.*;
import java.util.regex.*;

public class NetID {
String IPCONFIG_COMMAND_WIN = "ipconfig /all";
boolean realMac = true;
String unique = "";

public static String getMacAddress() {
NetID hwid = new NetID();
return hwid.getUnique().trim();
}

private String getUnique() {
String os = System.getProperty("os.name");

if (os.startsWith("Windows")) {
return getUniqueWindows();
}else {
return "";
}
}

private String getUniqueWindows() {
// 运行控制台命令,返回结果字符串
String ipConfigResponse = null;
try {
ipConfigResponse = runConsoleCommand(IPCONFIG_COMMAND_WIN);
}
catch (IOException e) {
e.printStackTrace();
}

// 按行分割结果字符串,并循环判断每个字符串直道找出 Mac 地址
StringTokenizer tokenizer = new StringTokenizer(ipConfigResponse, "\n");
while (tokenizer.hasMoreTokens()) {
String line = tokenizer.nextToken().trim();

// 获取每行 ":" 后的字符串
int macAddressPosition = line.indexOf(":");
if (macAddressPosition <= 0) {
continue;
}
String macAddressCandidate = line.substring(macAddressPosition + 1).
trim();


// 检查 macAddressCandidate 中内容是否为真实网卡 Mac 地址,根据 Mac 地址计算出唯一标识。
if (isMacAddWin(macAddressCandidate)) {
if (realMac == true) {
generateUnique(macAddressCandidate);
}
else {
realMac = true;
}
}
}

return unique;
}


/**
* 运行控制台命令,返回结果字符串
* @param command String
* @return String
* @throws IOException
*/
private String runConsoleCommand(String command) throws IOException {
Process p = Runtime.getRuntime().exec(command);
InputStream stdoutStream = new BufferedInputStream(p.getInputStream());

StringBuffer buffer = new StringBuffer();
while (true) {
int c = stdoutStream.read();
if (c == -1) {
break;
}
buffer.append( (char) c);
}
String outputText = buffer.toString();

stdoutStream.close();

return outputText;
}

/**
* 对输入参数进行检查,符合正则表达式的为 windows 平台下有效 Mac 地址
* @param macAddressCandidate String
* @return boolean
*/
private boolean isMacAddWin(String macAddressCandidate) {
Pattern macPattern = Pattern.compile("[0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2}");
Matcher m = macPattern.matcher(macAddressCandidate);
return m.matches();
}

/**
* 对输入参数进行检查,符合长度的为 MAC OS X 下有效网卡 Mac 地址
* @param macAddressCandidate String
* @return boolean
*/
private boolean isMacAddOSX(String macAddressCandidate) {
if (macAddressCandidate.length() != 17) {
return false;
}
else {
return true;
}
}

/**
* 产生 Unique
* @param macAddress String
*/
private void generateUnique(String macAddress) {
if (unique == "") {
unique += macAddress;
}
else {
unique += "#";
unique += macAddress;
}
}

public static void main(String [] args) {
System.out.println(NetID.getMacAddress());
}
}

/**这个方法是windows平台下通过运行控制台命令取网卡id。

其实最好的方法还是使用c直接取硬件id,然后使用jni调用c的方法。

另外,不是所有的硬盘,CPU都有序列号。如果要作为机器的唯一标识,建议组合使用。
*/

当然这代码是网上找的哈,硬盘的要用到动态链接库,

2007-03-28 14:07
快速回复:[求助]java能获得硬盘、cpu、网卡编号么,怎么获得
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024900 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved