JNI 如何搞啊。两位高手指点指点。分不够再加,俺还有6000多

解决方案 »

  1.   

    Runtime.exec("dir")之类的命令,截获输出进行分析
      

  2.   

    如果用jni会不会不安全,这样就可以让外界看到你调用程序的接口,如果是做注册判断的话,很容易被外界将判断信息捕获。Runtime.exec(“dir”)的方法可不可以说清楚一点?是在java里面直接实现,不用调用外部程序吗?
      

  3.   

    使用过一份如JohnsonShu(野蛮人)所说方式的代码,是读取自定义环境变量的。希望能有帮助。
    public static Properties getEnvVars() {
    Process p = null;
    Properties envVars = new Properties();
    try {
    Runtime r = Runtime.getRuntime();
    String OS = System.getProperty("os.name").toLowerCase();
    // System.out.println(OS);
    if (OS.indexOf("windows 9") > -1) {
    p = r.exec( "command.com /c set" );
    }
    else if ( (OS.indexOf("nt") > -1)
    || (OS.indexOf("windows 2000") > -1
    || (OS.indexOf("windows xp") > -1) ) ) {
    // thanks to JuanFran for the xp fix!
    p = r.exec( "cmd.exe /c set" );
    }
    else {
    // our last hope, we assume Unix (thanks to H. Ware for the fix)
    p = r.exec( "env" );
    }
    BufferedReader br = new BufferedReader
    ( new InputStreamReader( p.getInputStream() ) );
    String line;
    while( (line = br.readLine()) != null ) {
    int idx = line.indexOf( '=' );
    String key = line.substring( 0, idx );
    String value = line.substring( idx+1 );
    envVars.setProperty( key, value );
    }
    }
    catch (Exception e) {
    e.printStackTrace();
    //  we do not care here. Just no env vars for the user. Sorry.
    }
      

  4.   

    用API就不能跨平台了,比较麻烦啊!
    顺便问一下什么是JNI啊?(我是菜鸟)