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

时间:2012-09-27 12:16:10

标签: c# wmi ipv6

我正在使用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事情很陌生,我还没有找到一种方法来读出错误。如果有人有这方面的指针,请告诉。

2 个答案:

答案 0 :(得分:0)

Per @Codelgnoto comment,指向@Mike答案,不可能在Vista及更高版本上设置它; IPv6仅提供有限的支持,例如读取值 - 不设置它。请参阅Mike的帖子,了解简短(令人惊讶)的答案。

答案 1 :(得分:0)

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

从Windows Vista 开始,此属性可以包含IPv6地址或IPv4地址。有关详细信息,请参阅我Pv6 and IPv4 Support in WMI