- 我想知道“ManagementObject”返回值的含义,比如'2147947410'。
- 除了通过 WMI 之外,C# 是否有任何其他选项来修改 IP 地址?
- 如何防止 windows 在检测到 IP 冲突时将 IP 地址更改为 169.254.XXX?
- 在运行代码之前,我将一个网络的IP地址修改为192.168.1.66(不是我的目标网络)。 []
- 然后运行代码,它不会抛出任何异常,outPar["returnValue"]返回值2147947410,但是如果我打开目标网络的opions,IP地址是空的! []
- 而且,如果在 CMD 中输入“ipconfig”,我会看到目标网络的 IP 是 169.254.XXX。我知道这意味着“ip 冲突”。 []
- 下面是代码。
static void Main(string[] args)
{
// Run Code in Admin mode.
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"])
continue;
string[] addresses = (string[])mo["IPAddress"];
Console.WriteLine("开始修改");
try
{
//设置ip地址和子网掩码
inPar = mo.GetMethodParameters("EnableStatic");
inPar["IPAddress"] = new string[] { "192.168.1.66" };
inPar["SubnetMask"] = new string[] { "255.255.255.0" };
outPar = mo.InvokeMethod("EnableStatic", inPar, null);
Console.WriteLine(outPar["returnValue"]);
//设置网关地址
inPar = mo.GetMethodParameters("SetGateways");
inPar["DefaultIPGateway"] = new string[] { "0.0.0.0" };
outPar = mo.InvokeMethod("SetGateways", inPar, null);
}
catch (Exception e)
{
throw e;
}
//设置DNS
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
inPar["DNSServerSearchOrder"] = new string[] { "0.0.0.0" };
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
break;
}
Console.ReadLine();
}