我正在开发Windows平台上的java程序。我想访问Wi-Fi接口详细信息,如SSID,IP,子网,是否启用,是否已连接等等。目前我正在尝试使用netsh,ipconfig命令。例如,这是我如何获得连接的SSID。这样好吗?还有更简单的方法吗?提前致谢。
此代码是否可以在所有Windows版本中运行而没有任何问题?
String ssid;
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "netsh wlan show interfaces");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line.contains("SSID")){
ssid = line.split("\\s+")[3];
System.out.println(ssid);
return ssid;
}
}
答案 0 :(得分:1)
从Windows操作系统到Windows操作系统的NetSh.exe应用程序/命令存在差异。
NetSh上的Microsoft命令行参考声明“WindowsServer®2003,WindowsServer®2008和WindowsServer®2008R2上的netsh命令之间存在功能差异:”
意味着XP,Vista和Windows 7存在差异。但是,仅仅因为有更改并不意味着您无法尝试测试您要在应用中使用的少数命令。我这样说是因为NetSh.exe有很多功能,其中包含许多子命令,涵盖了许多网络技术。
为了测试从操作系统到操作系统的差异,您可以使用脚本在多个操作系统上列出NetSh.exe帮助菜单,或者比较微软网站上的示例命令(在下面的链接中)。
RobVanderwoude有一个脚本,显示了NetSh的所有子命令。如果您更进一步,可以列出所有子命令示例并比较OS之间的结果。
但是,您必须在每个操作系统上手动测试该命令,或者向您信任的人确认某个命令在操作系统上有效。
NetSh.exe CLI参考:https://technet.microsoft.com/en-us/library/ee404790.aspx
NetSh帮助脚本:http://www.robvanderwoude.com/netsh.php