如何在 Java 中访问每个网络接口的特定于连接的 DNS 后缀?
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() 将为我提供绑定的 IP 地址列表到此网络接口。
但是还有读取“特定于连接的 DNS 后缀”的方法吗?
Is it possible within a Java program to access the string contained in the "Connection-specific DNS Suffix" field of a Windows machine's ipconfig /all output?
Eg:
C:>ipconfig /all
Ethernet adapter Local Area Connection:
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
I know that getDisplayName() will get return the Description (Eg: Broadcom NetXtreme Gigabit Ethernet above) and that getInetAddresses() will give me a list of the IP addresses bound to this network interface.
But are there also ways of reading the "Connection-specific DNS Suffix"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好的,我想出了如何在 Windows XP 和 Windows 7 上执行此操作:
包含在特定于连接的
每个网络的 DNS 后缀字段
输出中列出的接口
ipconfig /all 可以在
登记处
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces{GUID}
(其中 GUID 是
感兴趣的网络接口)作为
名为 DhcpDomain 的字符串值(类型 REG_SZ)。
访问Windows注册表
来自爪哇:
Ok so I figured out how to do this on Windows XP and Windows 7:
contained in the Connection-specific
DNS Suffix field of each network
interface listed in the output of
ipconfig /all can be found in the
registry at
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces{GUID}
(where GUID is the GUID of the
network interface of interest) as the
string value (type REG_SZ) named DhcpDomain.
of accessing the windows registry
from Java:
我使用了一种更复杂的方法,它适用于所有平台。
在 Windows 7、Ubuntu 12.04 和一些未知的 Linux 发行版(Jenkins 构建主机)和一台 MacBook(未知的 MacOS X 版本)上进行了测试。
始终使用 Oracle JDK6。从未与其他 VM 供应商进行过测试。
注意:我在编辑器中编写了代码,没有复制实际使用的解决方案。它还不包含任何错误处理,例如没有名称的计算机、无法解析 DNS 名称等。
I used a much more complicated approach, which works on all platforms.
Tested on Windows 7, Ubuntu 12.04 and some unknown Linux distributions (Jenkins build hosts) and one MacBook (unknown MacOS X version).
Always with the Oracle JDK6. Never tested with other VM vendors.
Note: I wrote the code in the editor, did not copy the solution actually used. It also contains no error handling, like computers without a name, failure to resolve a DNS name, ...