我想以编程方式修改 Windows 上的网络适配器 DNS 服务器。我不想使用 WMI,因为例如当没有网络电缆连接到正在修改的以太网适配器时,它会失败。此外,它不支持设置 IPv6 配置。
因此我尝试直接在系统注册表中设置 DNS 服务器:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip[6]\Parameters\Interfaces\[Interface GUID]\NameServer
不幸的是,这些设置不会立即应用。
Netsh 命令似乎完美地满足了我的要求,但老实说,我认为如果我可以避免从我构建的应用程序启动外部进程,那就更好了。我希望它是独立的。我想知道是否有办法做到这一点。也许还应该修改一些其他注册表更改,或者应该由 WMI 触发某些操作?
答案1
NETSH 仍然是您想要做的。您似乎已经开发了某种应用程序,但更改注册表肯定不是解决问题的办法。
除此之外 - 我强烈建议您使用 DHCP 和保留,而不是在服务器/客户端上对任何 IP 设置进行硬编码 - 除了那些必须的(DHCP 服务器、域控制器等)。
DHCP 允许您集中管理这些设置并将其推广到 DHCP 客户端(客户端/服务器操作系统),而无需触碰它们。
您唯一的其他选择是 PowerShell - 但同样 - 您似乎不想使用“外部”程序 - NETSH 是 Windows 的一部分,只是它是一个命令行工具(或多或少)。
您没有过多提及您正在使用的开发平台 - 但还有另一种机会,例如.NET FrameWork 提供程序允许您枚举和更改网卡的设置,我从未专门研究过这一点,但我可以想象您有机会做到这一点..
如果您担心 NETSH 会失败 - 好吧 - 您仍然可以执行它,然后仔细检查注册表是否已应用预期设置。