使用jni在windows下读取硬盘序列号

    通常做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读取硬盘序列号的例子,完全可以在生产环境中使用。

转载请标明出处:i flym
本文地址:https://www.iflym.com/index.php/code/201109070001.html

相关文章:

作者: flym

I am flym,the master of the site:)

发表评论

邮箱地址不会被公开。 必填项已用*标注