java - 如何访问 Java 中每个网络接口(interface)的特定于连接的 DNS 后缀?

标签 java inetaddress network-interface

是否可以在 Java 程序中访问 Windows 机器的 ipconfig/all 输出的“特定于连接的 DNS 后缀”字段中包含的字符串?

例如:

C:>ipconfig/all

以太网适配器本地连接:

    Connection-specific DNS Suffix  . : myexample.com  <======== This string
    Description . . . . . . . . . . . : Broadcom NetXtreme Gigabit Ethernet
    Physical Address. . . . . . . . . : 00-30-1B-B2-77-FF
    Dhcp Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes
    IP Address. . . . . . . . . . . . : 192.168.1.66
    Subnet Mask . . . . . . . . . . . : 255.255.255.0

我知道 getDisplayName() 会返回描述(例如:上面的 Broadcom NetXtreme 千兆以太网),getInetAddresses() 会给我一个绑定(bind)到这个网络接口(interface)的 IP 地址列表。

但是还有读取“特定于连接的 DNS 后缀”的方法吗?

最佳答案

好的,所以我想出了如何在 Windows XP 和 Windows 7 上执行此操作:

  • 字符串(例如:myexample.com) 包含在特定于连接的 每个网络的 DNS 后缀字段 输出中列出的接口(interface) ipconfig/all 可以在 登记处 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces{GUID} (其中 GUID 是 感兴趣的网络接口(interface))作为 名为 DhcpDomain 的字符串值(类型 REG_SZ)。
  • 在 Java 中访问 Windows 注册表项并不简单,但通过巧妙地使用反射,可以访问在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\下找到的所需网络适配器的 key ,然后读取字符串名称为 DhcpDomain 的数据元素;它的值是必需的字符串。
  • 有关示例,请参阅以下链接 访问 Windows 注册表 来自 java :

关于java - 如何访问 Java 中每个网络接口(interface)的特定于连接的 DNS 后缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134790/

相关文章:

java正则表达式: group count fixed

java - 仅在循环中创建的最后一个 JLabel 上检测到 MouseListener

java - 奇怪的 InetAddress.isReachable() 问题

node.js - Azure - 使用 API 创建具有 IP 的 VM 实例

java - Springboot JDBCTemplate 多数据库

java - JustTouched 可以在 Windows 上运行吗?

java - 使用 InetAddress 或 System.getenv 获取主机名哪个更好

java 。 InetAddress.getLocalHost 返回奇怪的 IP

java - 如何获取网络接口(interface)类型

virtualbox - Virtual box Host only 网络接口(interface)