java通过jni方式获取硬盘序列号(windows,linux)

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

java通过jni方式获取硬盘序列号(windows,linux)

时间: 2024-12-17 03:26:50

java通过jni方式获取硬盘序列号(windows,linux)的相关文章

c/c++获取硬盘序列号

最近在接触软件注册模块,需要获取硬盘序列号来生成注册码. 硬盘序列号,英文名:Hard Disk Serial Number,该号是硬盘厂家为区别产品而设置的,是唯一的.网上搜索一下,发现获取硬盘序列号的代码遍地都是,但很多是错误的.典型代表就是使用GetVolumeInformation函数获取序列号.这种方法获取的是卷的序列号,即Volume Serial Number.硬盘格式化后,这种序列号将发生变化.本文描述的是获取硬盘唯一的物理序列号的方法. 获取硬盘序列号的方法:https://w

vc 获取 硬盘序列号 和 cpu

vc 获取 硬盘序列号 和 cpu 唯一iD的方法?如题---------网上找来很多资料 也没找到, 要支持xp win7 32/64 系统下都能获取 硬盘序列号 和cpu ID 哪位朋友帮帮忙:------解决方案--------------------不是很确定 没有测试64位的 http://blog.sina.com.cn/s/blog_612b382d0100efdt.html------解决方案--------------------CString cpu_id(){ int s1

在windows下获取硬盘序列号(win7 32位,Windows Server 64位测试,希望在其他平台测试,遇到问题的网友留言分享)

#include <Windows.h> #include <stdio.h> // IOCTL控制码 // #define DFP_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) // #define DFP_RECEIVE_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022,

C#获取硬盘序列号的问题求助

具体问题是这样的:我用下面这段获取硬盘型信息的代码做成的exe文件,在机子上测试的时候,出现直接双击运行和用管理员身份运行结果不一样的情况,这个问题该怎么解决? 1 public static String GetHardWareId() 2 { 3 String num = null; 4 List<String> hdids = new List<string>(); 5 ManagementClass mc = new ManagementClass("Win32_

Java 获取当前环境Windows/Linux 真实IP

public static String getCurrentIp() { try { Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkInterfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) networkInterfaces.nextEleme

MFC获取电脑硬盘序列号(附源码)

在新建的工程里面添加一个类 即:以下一个类 GetHDSerial.cpp // GetHDSerial.cpp: implementation of the CGetHDSerial class. // Download by http://www.newxing.com/ ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "

完善DriveInfoEx源代码 获取计算机硬盘序列号

概述: 获取计算机硬盘序列号用途很多,在网上找到了一个C++的源代码DriveInfoEx(点这里查看).非常好的一个DLL,.NET项目可以直接引用,而且源代码里有示例. 但这个DLL在Win7非管理员权限下,无法获取硬盘序列号,所以我就完善了一下这个DLL,让其支持Win7 非管理员. 源代码: https://github.com/Xiongpq/DriveInfoExFull 编译时请注意 源代码内的一些方法,在VC90里已经被系统直接支持,所以就不用再重复定义,不然编译不过,所以如果在

windows下获取硬盘信息的命令

2020-1-17windows下获取硬盘序列号===================================winkey run cmdMicrosoft Windows [版本 10.0.18363.592](c) 2019 Microsoft Corporation.保留所有权利.方法1:C:\Users\Administrator>wmic diskdrive get serialnumberSerialNumberW3PC29KQ 方法2:C:\Users\Administra

获取网卡MAC、硬盘序列号、CPU_ID、BIOS编号

抄来的 获取网卡MAC.硬盘序列号.CPU ID.BIOS编号 本文中所有原理及思想均取自网络,有修改.其中获取硬盘序列号.获取CPU编号.获取BIOS编号的原始代码的著作权归各自作者所有. 以下代码可以取得系统特征码(网卡MAC.硬盘序列号.CPU ID.BIOS编号) BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码 UINT uSystemInfoLen = 0; // 在程序执行完毕后,此处存储取得的系统特征码的长度 // 网卡 MAC