2017-06-04 4 views
0

Ich arbeite an ein wenig Code, der ein benutzerdefiniertes DHCP-Protokoll verwendet, um eine IP zu erhalten. Der Code muss dann eine der NICs der Maschine auf diese IP setzen.Set Machine IP unter Windows 7

Der Code, den ich dafür habe, ist unten.

private void SetIp(IPAddress ipAddress, IPAddress subnetMask, IPAddress gatewayAddress) 
    { 
      try 
      { 
       ManagementBaseObject objNewIP = null; 
       ManagementBaseObject objSetIP = null; 
       ManagementBaseObject objNewGate = null; 


       objNewIP = networkInterface.GetMethodParameters("EnableStatic"); 
       objNewGate = networkInterface.GetMethodParameters("SetGateways"); 



       //Set DefaultGateway 
       objNewGate["DefaultIPGateway"] = new string[] { gatewayAddress.ToString() }; 
       objNewGate["GatewayCostMetric"] = new int[] { 1 }; 


       //Set IPAddress and Subnet Mask 
       objNewIP["IPAddress"] = new string[] { ipAddress.ToString() }; 
       objNewIP["SubnetMask"] = new string[] { subnetMask.ToString() }; 

       objSetIP = networkInterface.InvokeMethod("EnableStatic", objNewIP, null); 
       objSetIP = networkInterface.InvokeMethod("SetGateways", objNewGate, null); 



       Console.WriteLine(
        "Updated IPAddress, SubnetMask and Default Gateway!"); 



      } 
      catch (Exception ex) 
      { 
      } 

     // throw new System.NotImplementedException(); 
    } 

Ich bekomme 2147749891 auf dem EnableStatic Aufruf. Dieser Beitrag Machine IP reset does nothing schlägt vor, ich brauche Admin-Privilegien auf der Maschine, die ich mache.

Die Microsoft-Seite https://msdn.microsoft.com/en-us/library/aa390383(v=vs.85).aspx schlägt vor, dass ich eine Schreibsperre erwerben muss, die com-Code erfordert, den ich lieber vermeiden möchte.

Gibt es einen besseren Weg, dies zu erreichen, vielleicht mit Netsh und vielleicht in einer Weise, die keine Admin-Privilegien erfordert? Alles, was ich habe die MAC-Adresse der Netzwerkkarte zu setzen und die Details für sie

einstellen

Dank

Antwort

1

ich den gleichen Fehler bekam, als EnableStatic aufrufen.

Das Hochfahren des Benutzers auf einen Admin (als Admin ausführen) löste mein Problem, was normal zu sein scheint: Nur der Administrator kann die NIC-Parameter ändern.

Ich habe noch zu bestimmen, warum ein Benutzer mit Administratorzugriff nicht den gleichen Code ausführen kann, möglicherweise ein UAC-Problem, Untersuchung ist in Bearbeitung.

Wie für die Microsoft-Seite (https://msdn.microsoft.com/en-us/library/aa390383(v=vs.85).aspx), das "Schreiben nicht aktiviert Lock" ist 2147786788. Nicht 21477 .

Verwandte Themen