为 windows 中的接口启用 ipv6
enable ipv6 for interface in windows
如何以编程方式为给定接口启用 IPv6?可以是 netsh、WMI 或任何可以从 C# 程序调用的东西。相当于点击界面属性中的复选框。
这个有效(Windows 8+):
static void SetIPv6State(Guid interfaceId, bool state)
{
var scope = new ManagementScope("\\.\ROOT\StandardCimv2");
var query = new ObjectQuery("SELECT * FROM MSFT_NetAdapterBindingSettingData");
var methodName = state ? "Enable" : "Disable";
using (var searcher = new ManagementObjectSearcher(scope, query))
using (var bindings = searcher.Get())
{
var binding = bindings.Cast<ManagementObject>().Single(obj => (string)obj["InstanceID"] == interfaceId.ToString("B").ToUpper() + "::ms_tcpip6");
var parameters = binding.GetMethodParameters(methodName);
binding.InvokeMethod(methodName, parameters, new InvokeMethodOptions());
}
}
Windows 7 需要 C++ 代码。
如何以编程方式为给定接口启用 IPv6?可以是 netsh、WMI 或任何可以从 C# 程序调用的东西。相当于点击界面属性中的复选框。
这个有效(Windows 8+):
static void SetIPv6State(Guid interfaceId, bool state)
{
var scope = new ManagementScope("\\.\ROOT\StandardCimv2");
var query = new ObjectQuery("SELECT * FROM MSFT_NetAdapterBindingSettingData");
var methodName = state ? "Enable" : "Disable";
using (var searcher = new ManagementObjectSearcher(scope, query))
using (var bindings = searcher.Get())
{
var binding = bindings.Cast<ManagementObject>().Single(obj => (string)obj["InstanceID"] == interfaceId.ToString("B").ToUpper() + "::ms_tcpip6");
var parameters = binding.GetMethodParameters(methodName);
binding.InvokeMethod(methodName, parameters, new InvokeMethodOptions());
}
}
Windows 7 需要 C++ 代码。