C# WMI SetMTU System.ManagementException - PullRequest
       66

C# WMI SetMTU System.ManagementException

0 голосов
/ 15 апреля 2020

Мы работаем над программой для настройки некоторых сетевых карт. Мы должны изменить 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"]));
    }
}

1 Ответ

0 голосов
/ 20 апреля 2020

До сих пор мы не решили проблему, но теперь мы проверяем, является ли ОС Windows 10, и мы запустим задачу PowerShell с помощью этой команды:

Get-NetAdapterAdvancedProperty -Name 'NICName' -DisplayName 'Jumbo-Rahmen' | Set-NetAdapterAdvancedProperty -RegistryValue  'MTUsize';

Jumbo- Rahmen должен быть JumboPacket на Engli sh OS

Если ОС не Windows 10, пользователю будет предложено изменить MTU вручную

...