当前位置:编程学习 > JAVA >>

win7下无法执行nbtstat.exe命令获取网卡地址?


想用nbtstat.exe执行发现执行结果为空,但是在命令窗口中执行时可以的,那位遇到过同样的问题?
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class TestRuntime {
public static void main(String[] args) { 
        try { 
            Process process = Runtime.getRuntime().exec("cmd /c C:\\Windows\\system32\\nbtstat.exe -a 192.168.44.1"); 
          
            BufferedReader read = new BufferedReader(new InputStreamReader(process.getInputStream()));
             String str = null; 
            while ((str = read.readLine()) != null) { 
                System.out.println(str); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 






--------------------编程问答-------------------- 会不会是执行权限的问题 --------------------编程问答--------------------
引用 1 楼 trocp 的回复:
会不会是执行权限的问题

  但是我用管理员帐户登录系统执行,也还是不行呀? --------------------编程问答-------------------- 我也碰到与楼主相同的问题了,报Cannot run program "nbtstat": CreateProcess error=2, ?????????。
我的系统是Win7 64位的,请问楼主怎么解决的?谢谢! --------------------编程问答-------------------- 这问题都两年了,居然没人回答,好吧,我是来找答案的,不是来解答的 --------------------编程问答-------------------- C:\\Windows\\system32\\nbtstat.exe在程序中调,是找不到的。
是64位系统的产生的原因,把命令改成“cmd /c C:\\Windows\\sysnative\\nbtstat.exe -a 192.168.44.1”就可以了,至于sysnative是什么意思,自行网上查查。

你的代码之所以不打印任何东西,也不输出错误信息,是因为用了process.getInputStream(),它是获取到了std_out,而由于前面说的,找不到C:\\Windows\\system32\\nbtstat.exe,会在std_err输出错误信息,所以你把process.getInputStream()改成getErrorStream()就可以了,它会把错误信息打出来。 --------------------编程问答-------------------- 楼上的,我爱你,太强大了,就这个问题我搞了一下午了,搞的蛋疼啊,网上查的东东都回答的牛头不对马嘴 --------------------编程问答-------------------- 留个脚印,能用到
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,