对于网络刷新,我通常以管理员权限打开命令提示符,然后输入这些命令。
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdns
我需要在c#代码中运行这五个命令:
现在我有一个代码,只有发布和更新的工作。下面是该代码。
public bool FlushAllNetworks()
{
try
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
//Need to determine which adapter here with some kind of if() statement
objMO.InvokeMethod("ReleaseDHCPLease", null, null);
objMO.InvokeMethod("RenewDHCPLease", null, null);
}
}
catch (Exception ex) {
return false;
}
return true;
}
任何帮助将被感激。谢谢。
EDIT:我找到了一个答案。我采纳了AmirHossein的建议,并做了一个小小的修正。下面是我自己问题的解决方法。
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Verb = "runas";
startInfo.Arguments = "/C netsh winsock reset & netsh int ip reset & ipconfig /release & ipconfig /renew & ipconfig /flushdns";
process.StartInfo = startInfo;
process.Start();
你可以使用 Process()
来运行你提到的命令。
Process p = new Process();
p.startInfo.CreateNoWindow = true;
p.startInfo.UseShellExecute = false;
p.startInfo.FileName = "cmd";
p.startInfo.Arguments = "netsh winsock reset && netsh int ip reset && ipconfig /release && ipconfig /renew && ipconfig /flushdns";
p.Start();
它在后台执行命令