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