知道一个系统服务名,(该服务已经启动)怎么得到该服务进程开放了哪个端口呢?

解决方案 »

  1.   

    在命令行里面执行netstat -anb
      

  2.   

    晕。讨论的是delphi代码 使用命令行不算。
      

  3.   

    http://zhidao.wangchao.net.cn/detail_5890973.html看看这个去
      

  4.   

    楼上的,呵呵
    2000与以前的都不支持
    xp与以后的都支持
    xp用fAllocateAndGetTCPExTableFromStack(UDP) ,你用google找找,很多的
    vista用fGetExtendedTcpTable(UDP)
      

  5.   

    楼上的正解,但这样只是能得到指定进程的开放端口,而不能得到指定服务的开放端口, 因为有些系统服务是几个服务共用一个文件的。如svchost.exe ,就有很多服务使用的都是这个文件。所以不能从文件名来定位进程,只能通过服务名取得进程pid来定位进程。
      

  6.   

    说的正确,对于多个服务共用一个程序的,现在还没有办法
    用PID也是不行的,就以你所说的,svchost很多服务都是用它,
    看看其他高手的吧
      

  7.   

    今天加班,顺便看了哈,其实要解决是很简单的
    1:根据服务名来取出可执行文件的路径:如:C:\WINDOWS\System32\svchost.exe -k netsvcs
    2:遍历进程,同样取出上面的,再对比
    3.....
    4:如我上面说的,过滤哈就OK