Как добавить IP-адрес в windows 10 с помощью C#
Я хочу добавить несколько IP-адресов в свой порт Ethernet.
Я попробовал ниже в обе стороны
1. использование класса Управления
public void setIP() { string myDesc = "Realtek USB GbE Family Controller"; string gateway = "10.210.255.1"; string subnetMask = "255.255.255.0"; string address = "10.210.255.102"; var adapterConfig = new ManagementClass("Win32_NetworkAdapterConfiguration"); var networkCollection = adapterConfig.GetInstances(); foreach (ManagementObject adapter in networkCollection) { string description = adapter["Description"] as string; if (string.Compare(description, myDesc, StringComparison.InvariantCultureIgnoreCase) == 0) { try { // Set DefaultGateway var newGateway = adapter.GetMethodParameters("SetGateways"); newGateway["DefaultIPGateway"] = new string[] { gateway }; newGateway["GatewayCostMetric"] = new int[] { 1 }; // Set IPAddress and Subnet Mask var newAddress = adapter.GetMethodParameters("EnableStatic"); newAddress["IPAddress"] = new string[] { address }; newAddress["SubnetMask"] = new string[] { subnetMask }; adapter.InvokeMethod("EnableStatic", newAddress, null); adapter.InvokeMethod("SetGateways", newGateway, null); Console.WriteLine("Updated to static IP address!"); } catch (Exception ex) { Console.WriteLine("Unable to Set IP : " + ex.Message); } } } }
2. Использование Powersellscript в C#
private string RunScript() { string scriptText = "$iplist = \"10.210.255.102\"" + "," + " \"10.210.255.103\"" + "\nforeach ($ip in $iplist)" +"\n{" +" \nNew-NetIPAddress -InterfaceAlias \"Ethernet\" -IPAddress $ip -PrefixLength 24" +"\n}"; // create Powershell runspace Runspace runspace = RunspaceFactory.CreateRunspace(); // open it runspace.Open(); // create a pipeline and feed it the script text Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.AddScript(scriptText); // add an extra command to transform the script // output objects into nicely formatted strings // remove this line to get the actual objects // that the script returns. For example, the script // "Get-Process" returns a collection // of System.Diagnostics.Process instances. pipeline.Commands.Add("Out-String"); // execute the script var results = pipeline.Invoke(); // close the runspace runspace.Close(); // convert the script result into a single string StringBuilder stringBuilder = new StringBuilder(); foreach (PSObject obj in results) { stringBuilder.AppendLine(obj.ToString()); } return stringBuilder.ToString(); }
Оба не работают, мой код работает правильно, он не идет внутрь улова,
но не в состоянии добавить IP,
даже я могу добавить IP с помощью запущенного файла power script из Windows PowerShell, но тот же сценарий не работает внутри C#,
все что я пытаюсь добавить это количество IP адресов в одной карте Ethernet
Примечание: да, у меня есть права администратора, я уже выполняю это вручную и с помощью PowerShell tool power script.
еще одна вещь,
каждый раз, когда я должен щелкнуть правой кнопкой мыши окно PowerShell и запустить от имени администратора, чтобы запустить свой scrip
Что я уже пробовал:
Пожалуйста, проверьте приведенный выше код для класса управления и силовой оболочки,
Я пробовал и то и другое, но до сих пор ничего не решил
Richard MacCutchan
Вы запускаете это приложение от имени администратора?
Varun Nayak89
@Richard, я просто запускаю свое приложение от имени администратора и бум. Проблема решена!!
можете ли вы написать то же самое внутри решения, которое я хочу отметить как ответ
Richard MacCutchan
Смотреть ниже.