使用 WMI (C#) 设置静态 IPv6 IP 地址



我正在使用 ManagementClass 构建此 IP 管理器工具,但在尝试通过 WMI 设置 IPv6 地址时遇到问题。

我正在使用的代码的相关部分如下:

ManagementBaseObject ipParams = wmiManager.GetMethodParameters("EnableStatic");
ipParams["IPAddress"] = ipAddresses; // { "fe80::fcd8:70b5:89f3:825d" }
ipParams["SubnetMask"] = netmasks;   // { "64" }
wmiObject.InvokeMethod("EnableStatic", ipParams, null);

当具有子网掩码(整数格式)的 IPv6 地址(标准格式)传递给 EnableStatic 方法时,它似乎没有应用它。

我认为验证子网掩码时可能存在问题,但我不确定 IPv6 是否有完整的子网掩码表示法。然后,它也可能是对IP地址的验证或完全不同的东西。

我对 ManagementClass 的事情很陌生,我还没有找到读出错误的方法。如果有人对此有所了解,请告知。

根据@Codelgnoto条评论,指出@Mike答案,不可能在 Vista 及更高版本上设置它;IPv6 只有有限的支持,例如读取值 - 而不是设置它。请参阅迈克的帖子以获取简短(令人惊讶)的答案。

与当前网络适配器关联的所有 IP 地址的数组。

从 Windows Vista 开始,此属性可以包含 IPv6 地址或 IPv4 地址。有关详细信息,请参阅 WMI 中的 IPv6 和 IPv4 支持。

最新更新