私は、カスタムDHCPプロトコルを使用してIPを取得するコードを少し開発しています。コードは、マシンのNICの1つをそのIPに設定する必要があります。Windows 7でマシンIPを設定する
コードは以下のとおりです。
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();
}
EnableStaticの呼び出しで、私は2147749891を取得し続けます。この投稿Machine IP reset does nothingは、私が行っているマシンで管理者特権が必要だと示唆しています。
マイクロソフトのページhttps://msdn.microsoft.com/en-us/library/aa390383(v=vs.85).aspxは、私がむしろ避けたいと思うcomコードを必要とする書き込みロックを取得する必要があることを示唆しています。
おそらくnetshを使用して、おそらく管理者特権を必要としない方法で、これを達成するより良い方法はありますか? EnableStaticを呼び出すときに、私は
おかげ