在没有管理员权限的情况下更改C#中的IP设置(默认网关)

时间:2014-06-18 20:53:34

标签: c# networking admin

我目前正在尝试通过我的应用中的C#代码编辑Windows网络设置,而我似乎无法找到一种方法来实现"对"办法?特别是我试图删除以太网接口的默认网关。我们的应用程序通过LAN电缆与迷你路由器配合使用,允许通过wifi网关访问互联网的唯一方法是删除迷你路由器网关。

我试过调用外部工具......

直接编辑表格:

route change 0.0.0.0 mask 0.0.0.0 <gateway of real internet>

编辑Windows网络设置:

netsh interface ipv4 set address "Ethernet" static 192.168.0.100 255.255.255.0 none

但我认为最好直接通过代码完成,所以现在我有:

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
   if (mo["Description"].Equals(ethernetInterfaceDesc))
   {
      mo.InvokeMethod("EnableStatic", new object[] {
         new string[] { ethernetInterfaceIp },
         new string[] { "255.255.255.0" }
      });

      mo.InvokeMethod("SetGateways", new object[] {
         new string[] { null },
         new string[] { "1" }
      });

      Log.debug("Set gateway for " + mo["Description"]);
      break;
   }
}

在所有情况下,我在关闭应用程序时恢复了我对类似操作所做的更改,并以编程方式检索了接口名称和ip。

所有这些都运行得很好,但问题是应用程序必须运行升级或要求用户在某些点上进行管理员访问。在阅读此评论后:https://stackoverflow.com/a/2022387/3112658我觉得还有另一种方式。感谢。

0 个答案:

没有答案