using System; using System.Collections.Generic; using System.Net; using wrapGetExtendedTable; using System.Management; namespace TcpListenerList { class Program { static String getProcessImage(long pid) { String q = String.Format("Win32_Process.Handle={0}",pid); String ans = ""; try { ManagementObject mo = new ManagementObject(q); ans = mo.Properties["Caption"].Value.ToString() + " "; ans += mo.Properties["ExecutablePath"].Value.ToString() + " "; ans += mo.Properties["CommandLine"].Value.ToString(); } catch (Exception) { } return ans; } static void Main(string[] args) { iphlpapi aa = new iphlpapi(); MIB_TCPTABLE_OWNER_PID z1 = aa.xGetExtendedTcpTableOwnerPid(TCP_TABLE_CLASS.TCP_TABLE_OWNER_PID_LISTENER); MIB_UDPTABLE_OWNER_PID z2 = aa.xGetExtendedUdpTableOwnerPid(UDP_TABLE_CLASS.UDP_TABLE_OWNER_PID); Console.WriteLine("{0,-4} {1,21} {2,6} {3}", "TYPE", "LocalAddress", "PID", "Command & CommandLine"); for (int i = 0; i < z1.table.Length; i++) { IPAddress a = new IPAddress(z1.table[i].dwLocalAddr); IPAddress b = new IPAddress(z1.table[i].dwRemoteAddr); Console.WriteLine("{0,-4} {1,15}:{2,5} {3,6:#####0} {4}" , "TCP" , a.ToString() , z1.table[i].dwLocalPort , z1.table[i].dwOwningPid , getProcessImage((long)z1.table[i].dwOwningPid)); } for (int i = 0; i < z2.table.Length; i++) { IPAddress a = new IPAddress(z2.table[i].dwLocalAddr); Console.WriteLine("{0,-4} {1,15}:{2,5} {3,6:#####0} {4}" , "UDP" , a.ToString() , z2.table[i].dwLocalPort , z2.table[i].dwOwningPid , getProcessImage((long)z2.table[i].dwOwningPid)); } } } }