void GetAll() { IDictionary < string , string > hostList = new Dictionary< string , string > (); DirectoryEntry MainGroup = new DirectoryEntry( " WinNT: " ); foreach (DirectoryEntry domain in MainGroup.Children) { foreach (DirectoryEntry pc in domain.Children) { try { System.Net.IPAddress[] remoteHost = Dns.GetHostAddresses(pc.Name); hostList.Add(pc.Name, remoteHost[ 0 ].ToString()); } catch { } } } using (StreamWriter sw = new StreamWriter( " c:\\pp.txt " , true )) { foreach (KeyValuePair< string , string > child in hostList) { sw.WriteLine(Environment.NewLine + " name: " + child.Key + " ip: " + child.Value); } sw.Flush(); sw.Close(); } }
以上把局域网的计算机以及IP保存到c盘
再根据ip地址获取mac地址
public string GetMac( string IP) { string dirResults = "" ; ProcessStartInfo psi = new ProcessStartInfo(); Process proc = new Process(); psi.FileName = " nbtstat " ; psi.RedirectStandardInput = false ; psi.RedirectStandardOutput = true ; psi.Arguments = " -A " + IP; psi.UseShellExecute = false ; proc = Process.Start(psi); dirResults = proc.StandardOutput.ReadToEnd(); proc.WaitForExit(); dirResults = dirResults.Replace( " \r " , "" ).Replace( " \n " , "" ).Replace( " \t " , "" ); Regex reg = new Regex( " Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?))__MAC " , RegexOptions.IgnoreCase | RegexOptions.Compiled); Match mc = reg.Match(dirResults + " __MAC " ); if (mc.Success) { return mc.Groups[ " key " ].Value; } else { reg = new Regex( " Host not found " , RegexOptions.IgnoreCase | RegexOptions.Compiled); mc = reg.Match(dirResults); if (mc.Success) { return " Host not found! " ; } else { return "" ; } } }
需要的稍作更改即可使用