linux系统java通过jni方式获取硬盘序列号
http://blog.csdn.net/starter110/article/details/8186788
使用jni在windows下读取硬盘序列号 http://www.iflym.com/index.php/code/201109070001.html
通常做java程序的开发人员都想过想要通过某种手段来保护自己的程序。一般的方式是通过授权,采取软件授权的方式。这个时间就需要读取客户机器上的一些关键信息,比如硬盘序列号,网卡,cpu信息或者bios信息等。其中,java本身可以读取网卡信息,对于其它的机器信息读取出来则有点困难了。然而,通过其它语言,比如c++,这些信息都可以通过一定的函数将其读取出来。 本文描述了通过网上的一个读取硬盘序列号的小程序(使用c++实现),采用jni来再次引用实现,以达到首要的目的。
首先是需要下载相应的通过c++读取硬盘信息的相应代码,相应的源代码可以到此地址下载。 http://download.csdn.net/download/Fly_m/3581179 待下载完全之后,通过以下简单的方式即可以读取硬盘序列号,并返回相应的java 字符串信息。如定义的读取硬盘序列号的java本地方法为:
static
native
String r();
则相对应的jni的实现即为:
JNIEXPORT jstring JNICALL XXX_r
(JNIEnv *env, jclass cls) {
DiskInfo d = DiskInfo();
int
i = d.GetDiskInfo();
if
(i !=
0
) {
return
env->NewStringUTF(
""
);
}
return
env->NewStringUTF(d.szSerialNumber);
}
以上即为完整的通过jni读取硬盘序列号的例子,完全可以在生产环境中使用。