Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中更改ip设置(默认网关),无管理员权限_C#_Networking_Admin - Fatal编程技术网

在C#中更改ip设置(默认网关),无管理员权限

在C#中更改ip设置(默认网关),无管理员权限,c#,networking,admin,C#,Networking,Admin,我目前正试图通过我的应用程序中的C#代码编辑Windows网络设置,但我似乎找不到一种“正确”的方法来完成它?具体来说,我正在尝试删除以太网接口的默认网关。我们的应用程序通过LAN电缆与迷你路由器配合使用,唯一允许通过wifi网关访问互联网的方法是移除迷你路由器网关 我试着打电话给外部公用事业公司 直接编辑表格: route change 0.0.0.0 mask 0.0.0.0 <gateway of real internet> 但我认为最好直接通过代码来实现,所以现在我有:

我目前正试图通过我的应用程序中的C#代码编辑Windows网络设置,但我似乎找不到一种“正确”的方法来完成它?具体来说,我正在尝试删除以太网接口的默认网关。我们的应用程序通过LAN电缆与迷你路由器配合使用,唯一允许通过wifi网关访问互联网的方法是移除迷你路由器网关

我试着打电话给外部公用事业公司

直接编辑表格:

route change 0.0.0.0 mask 0.0.0.0 <gateway of real internet>
但我认为最好直接通过代码来实现,所以现在我有:

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


所有这些都工作得很好,但问题是该应用程序必须在某些点上运行或请求用户访问管理员。读了这篇评论之后:我觉得必须有另一种方式。谢谢。

您可以通过命令行或GUI应用程序不使用提升功能来完成吗?如果不是,是什么让你认为你可以在不要求提升的情况下通过C#程序来完成?
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;
   }
}