java如何读取硬件信息

我现在做一个付费的桌面应用的项目,希望能实现“注册码”的功能,别人在没有得到我的许可的情况下,得不到注册码,也就无法使用软件了。还有,我看别的软件有的只认一台计算机,如果... 我现在做一个付费的桌面应用的项目,希望能实现“注册码”的功能,别人在没有得到我的许可的情况下,得不到注册码,也就无法使用软件了。还有,我看别的软件有的只认一台计算机,如果在别的机器上安装就失效了,能给详细介绍下:需要哪些技术。
非常感谢,我只有60分,全部献出!
展开
 我来答
弑神之风
2009-09-07 · TA获得超过306个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:117万
展开全部
桌面程序的话,很难实现,因为程序无法判断在其他没有连在一起的机器上有没有安装,就是说别人脱机安装(并修改硬件信息)就能破解“在别的机器上安装就失效”这个功能,你可以在对方发来机器信息和用户信息后单独给他安装程序,这样就保证了程序版本的单一性

Java读取硬件信息(JDK5+)
System.getProperty(String src);
(以下为src对应的系统信息,例如System.getProperty("java.version")表示Java 运行时环境版本信息)
java.version:Java 运行时环境版本
java.vendor:Java 运行时环境供应商
java.vendor.url:Java 供应商的 URL
java.home:Java 安装目录
java.vm.specification.version:Java 虚拟机规范版本
java.vm.specification.vendor:Java 虚拟机规范供应商
java.vm.specification.name:Java 虚拟机规范名称
java.vm.version:Java 虚拟机实现版本
java.vm.vendor:Java 虚拟机实现供应商
java.vm.name:Java 虚拟机实现名称
java.specification.version:Java 运行时环境规范版本
java.specification.vendor:Java 运行时环境规范供应商
java.specification.name:Java 运行时环境规范名称
java.class.version:Java 类格式版本号
java.class.path:Java 类路径
java.library.path:加载库时搜索的路径列表
java.io.tmpdir:默认的临时文件路径
java.compiler:要使用的 JIT 编译器的名称
java.ext.dirs:一个或多个扩展目录的路径
os.name:操作系统的名称
os.arch:操作系统的架构
os.version:操作系统的版本
file.separator:文件分隔符(在 UNIX 系统中是“/”)
path.separator:路径分隔符(在 UNIX 系统中是“:”)
line.separator:行分隔符(在 UNIX 系统中是“/n”)
user.name:用户的账户名称
user.home:用户的主目录
user.dir:用户的当前工作目录
性情中人的文库
2015-08-25 · TA获得超过481个赞
知道小有建树答主
回答量:219
采纳率:90%
帮助的人:150万
展开全部
把这个方法放到你的类下边

public void testGetSysInfo() {
//这个是信息变量
String address = "";
//获得系统名称
String os = System.getProperty("os.name");
if (os != null && os.startsWith("Windows")) {

//抓异常
try {

//定义dos命令
String command = "cmd.exe /c ipconfig /all";

//执行dos命令
Process p = Runtime.getRuntime().exec(command);
BufferedReader 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();
logger.info("mac address:" + address.trim());
} catch (IOException e) {
logger.info("Error:" + e);
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
waykingchanglu
2015-08-14 · TA获得超过203个赞
知道小有建树答主
回答量:308
采纳率:100%
帮助的人:120万
展开全部
不能直接读取,
java交互硬件,你是指操作系统的硬件还是第三方的硬件?
一般来讲java的出发点是安全的编程语言,也就是底层一些接口没有提供可使用的api
那么如果我们业务确实有这种需求,
如果是第三方的硬件,可以要求提供商提供相关接口,如果是类似是你指的操作系统,
可以使用c来实现,然后通过java来调用c代码实现交互硬件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
走走停停wzj
2009-09-07 · TA获得超过224个赞
知道答主
回答量:101
采纳率:0%
帮助的人:89.3万
展开全部
用java做恐怕比较难啊!
你可以做一个dll,然后用java调dll来实现你的功能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
godcomexxx
2009-09-07 · TA获得超过1205个赞
知道小有建树答主
回答量:651
采纳率:0%
帮助的人:569万
展开全部
楼主看看这个
好像是能读出机器的一些信息
http://www.rgagnon.com/javadetails/java-0580.html
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式