Change network configuration in C #

I am trying to make a simple program to change IP settings in C #. I use this code: How can you change the network settings (IP address, DNS, WINS, host name) with C # code, execute it and make your own method:

public void changerip(string adresse, string NIC) { ManagementObjectCollection objMOC = objMC.GetInstances(); foreach (ManagementObject objMO in objMOC) { if (objMO["Caption"].Equals(NIC)) { try { if (adresse != "0") { ManagementBaseObject setIP; ManagementBaseObject newIP = objMC.GetMethodParameters("EnableStatic"); newIP["IPAddress"] = new string[] { "192.168." + adresse + ".50" }; newIP["SubnetMask"] = new string[] { "255.255.255.0" }; setIP = objMO.InvokeMethod("EnableStatic", newIP, null); ManagementBaseObject setGateway; ManagementBaseObject newGateway = objMO.GetMethodParameters("SetGateways"); newGateway["DefaultIPGateway"] = new string[] { "192.168." + adresse + ".254" }; newGateway["GatewayCostMetric"] = new int[] { 1 }; setGateway = objMO.InvokeMethod("SetGateways", newGateway, null); ManagementBaseObject newDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder"); newDNS["DNSServerSearchOrder"] = "192.168.1.24,192.168.1.2".Split(','); ManagementBaseObject setDNS = objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null); } else { ManagementBaseObject newDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder"); newDNS["DNSServerSearchOrder"] = null; ManagementBaseObject enableDHCP = objMO.InvokeMethod("EnableDHCP", null, null); ManagementBaseObject setDNS = objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null); //Save all Gateways into an array string[] gateways = (string[])objMO["DefaultIPGateway"]; ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic"); ManagementBaseObject newGate = objMO.GetMethodParameters("SetGateways"); //Set last value of the array(always the Gateway recived by DHCP) as the default Gateway newGate["DefaultIPGateway"] = new string[] { gateways[gateways.Length - 1] }; newGate["GatewayCostMetric"] = new int[] { 1 }; } } catch (Exception Ex) { MessageBox.Show(Ex.Message); } } } } 

It works great on Windows XP, but it doesn't work on Windows 7 (Starter or Pro). I do not have any exceptions and error / security messages from the OS.

Does anyone have an idea of ​​what happened?

+4
source share
1 answer

Looks like credentials for me. You must run the program with administrator rights. You can do this by simply right-clicking on the EXE and clicking on “Run as administrator”.

+4
source

Source: https://habr.com/ru/post/1395582/


All Articles