Мы работаем над программой для настройки некоторых сетевых карт. Мы должны изменить IP-адреса, маску подсети и MTU. Все прошло хорошо, кроме заявления MTU:
public void SetMTU()
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
if (networkadapterID == (String)objMO["SettingID"])
{
ManagementBaseObject setMTU;
ManagementBaseObject newMTU = objMO.GetMethodParameters("SetMTU");
Int32 test = 9216;
newMTU["MTU"] = test;
setMTU = objMO.InvokeMethod("SetMTU", newMTU, null);
}
}
}
Дан правильный NI C ID. Другие операции WMI выполняются успешно, но мы застряли на этом с сообщением об ошибке: System.Management.ManagementException: «D ie Methode ist ungültig.»
(System.Management.ManagementException: «Метод недопустим». )
Мы также пытались использовать «тест» в качестве строки или uint32 (поскольку в документах Microsoft указано, что это uint32), также:
newMTU["MTU"] = new (u)int[] { MTU };
, но это тоже не работает. Между тем у нас нет идей, как решить проблему.
Я благодарен за каждую идею.
Спасибо за вашу помощь и хорошего дня, Алекс
Изменить: Код для чтения MTU должен быть (вы должны указать эту часть NetworkID, чтобы вы не читали значение каждого NI C, вы найдете это в своем реестре, но вы сможете удалить часть if ):
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
if (networkadapterID == (String)objMO["SettingID"])
{
MessageBox.Show(Convert.ToString(objMO["MTU"]) + ": " + Convert.ToString(objMO["SettingID"]));
}
}