当然要加入本地调用,用C写一个校验程序把本机的网卡的Mac地址或CPU编号存储起来,每次调用这个CLASS都调用这个c模块比较一下。

解决方案 »

  1.   

    the rainight(雨夜聆风)'s say is good way!support
      

  2.   

    to rainight(雨夜聆风) ( )
    调用C?能不能给个例子?
      

  3.   

    网卡的Mac
    CPU编号
    主板序列号
    硬盘ID
      

  4.   

    尝试一下我以前使用的一个比较丑陋的解决方法:方法一:
    利用RMI:
    java.rmi.registry.LocateRegistry.createRegistry(5555);
    创建失败则系统退出。原理:
    在一个局域网中,只允许在一个端口上绑定一个Registry;
    当第二次试图在这个端口上绑定Registry服务时,就会发生异常。
    这样,你的程序每次在启动时创建Registry,如果创建失败,则认为已经有系统实例在运行,当前程序就自动退出。缺点:
    可能会和其他系统冲突
    假如其他系统使用了RMI技术,并且使用的端口号刚巧和你选择的端口号相同,那么你的程序就永远无法打开了。
    评估:
    由于RMI技术使用并不广泛,并且即便使用,端口号重复的几率也比较小,所以这种冲突发生的可能性不大。
    解决方法:
    你可以使用下面稍微复杂一点的方式,来保证上面的冲突不会发生:方法二:
    首先创建Registry服务,再在其上绑定一个你自己的RMI接口。
    这样:
    1,假如你创建Registry服务成功,则绑定自己的RMI接口,启动系统;
    2,假如你创建Registry服务失败,则查找RMI接口:
    3,如果步骤2查找到接口,则认为系统已经启动过一个实例,当前系统退出;
    4,如果步骤2没有查找到,则试图在第二个端口创建Registry服务,重复步骤1-4;通常重复尝试三个不同的端口就已经足够了。
      

  5.   

    现在,手机软件开发商最头疼的事情就是开发的java软件无法防止盗版。呵呵,跟楼主的问题一致。这个纯java是无法解决的。