之前的自动更新 Smarthosts 到本地 hosts最后需要刷新 DNS 缓存,刷新 DNS 缓存首先想到的就是“ipconfig /flushdns” 命令,直接调用 cmd.exe 就可以了。不知道 .net 里是否提供了直接刷新 DNS 的方法,于是搜索了一下,很奇怪搜索“ C# 刷新 DNS 缓存”竟然找不到想要的结果,搜索“c# flush dns cache”一下就有答案了。方法大概有两种,一种就是调用 cmd.exe,一种就是调用系统 API:dnsapi.dll,其实 cmd 里方法也是调用 dnsapi.dll 实现的,为了不那么麻烦,这里就直接调用 cmd.exe 了。

using (System.Diagnostics.Process process = new System.Diagnostics.Process())
{
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "ipconfig /flushdns";
process.StartInfo = startInfo;
process.Start();
}

标签: