使用 netsh 从 Java 访问 Wi-Fi 网络接口详细信息

Accessing Wi-Fi network interface details from Java using netsh

我正在 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;
    }
}

NetSh.exe App/Command 从 Windows OS 到 Windows OS.

关于 NetSh 状态的 Microsoft 命令行参考 "There are functional differences between netsh commands on Windows Server® 2003, Windows Server® 2008, and Windows Server® 2008 R2:"

意思是 XP、Vista 和 Windows 7. 但是,仅仅因为有变化并不意味着您不能尝试测试您要在应用程序中使用的几个命令.我这样说是因为 NetSh.exe 拥有大量功能,其中包含许多跨越多种网络技术的子命令。

为了测试从 OS 到 OS 的差异,您可以使用脚本列出多个 OS 上的 NetSh.exe 帮助菜单或比较示例Microsoft 网站上的命令(在下面 link)。

RobVanderwoude 有一个脚本可以显示 NetSh 的所有子命令。如果您将脚本更进一步,您可以列出所有子命令示例并比较 OS.

之间的结果

仍然,您必须在每个 OS 上手动测试该命令,或者从您信任的人那里确认某个命令在 OS.

上有效

NetSh.exe CLI 参考:https://technet.microsoft.com/en-us/library/ee404790.aspx

NetSh 帮助脚本:http://www.robvanderwoude.com/netsh.php