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
einstellenDank