在WindowsXP/2003下查看端口对应的进程(24) UDP 202.194.4.218:123 *:* 876//---------------------------------------------------------我们只要对这两个文件中的信息处理下就能提取到端口和PID的对应表了定义如下结构体吧://-------------------------------typedef strUCt _PORTTOPROCESS{ CString Port CString Protocol CString Pid CString ProcName CString ProcPath}PORTTOPROCESS//-------------------------------PORTTOPROCESS PortToProcess[100] //声明一百个结构体应该够用了第一步通过处理上述两个文件来实例化PortToProcess数组中的Port,Protocol,Pid项,并返回总的PortNum第二步通过进程快照获得pid对应的程序名实例化结构体中的ProcName项第三步先按tlist.exe pid1find "CmdLine:">>procinfo.txttlist.exe pid2find "CmdLine:">>procinfo.txttlist.exe pid3find "CmdLine:">>procinfo.txt . . . .的格式写成一个bat文件,通过system()函数运行它,得到每个端口对应PID对应的进程信息接着写个函数从procinfo.txt文件里把信息读出来实例化结构体中的ProcPath项最后根据PortNum输出结果原理就这么简单了,具体的看代码吧,附查看程序!在2003和xp下测试成功,vc6.0+2003的编译环境,代码中PcInfor类是个比较全的类,可以获得系统的详细信息,只要把PcInfor.h和PcInfor.cpp拷贝到你的工程项目中就能用了程序运行的时候会有CMD窗口弹出,这是因为调用了system()函数所致,在CMD窗口运行完之后程序会等待一段时间(大概20秒),是为了等待bat文件执行完,如果你的机子运行比较慢,可以把原代码的此处修改一下:void PcInfor::GetPortToProcessInfo()