【问题标题】:How do I get the process name and binary path for a open port with Qt on Windows?如何在 Windows 上使用 Qt 获取开放端口的进程名称和二进制路径?
【发布时间】:2014-05-22 20:05:13
【问题描述】:

我正在编写一个端口冲突检查函数。 我需要确定:

  • 如果某个端口是开放的
  • 守护进程的进程名
  • 守护进程二进制文件的路径

我的想法是运行一个 QProcess 执行本机命令 netstat -abno 并解析输出。但参数-b 需要提升权限(UAC),我不想让用户使用 UAC 提示。

是否有提供此类功能的 Qt 库? 你将如何实现它?

【问题讨论】:

  • 端口路径是什么意思?坦白说,看标题,没看正文就想到了serialport……
  • 端口是指通信端点,例如端口:80、8080、5433。
  • 我知道什么是端口 :) 但我不知道什么是端口路径以及为什么需要它 :)
  • “端口路径”?我的意思是在某个端口上侦听的守护程序的可执行文件的路径。我相应地改变了问题。为什么?我需要检查可执行文件/守护程序是从我们的安装文件夹还是从另一个目录运行的路径。
  • 在 Windows 上很容易做到。并非没有海拔,这是非常可利用的信息。

标签: windows qt service port netstat


【解决方案1】:

你可以使用Tcpvcon.exe,它是TCPView的一部分
TCPView需要管理员权限,tcpvcon不需要
-an-acn 一起使用
您甚至可以指定应用程序以在之后检查:例如Tcpvcon.exe -an Skype

最初由Dane前段时间发现:

如果您想要一个 GUI,请使用 TCPView。这是微软收购的旧 Sysinternals 应用程序

【讨论】:

    【解决方案2】:
    • 我的想法是运行一个 QProcess,执行本机命令 netstat -abno 并解析输出

    要做到这一点,你可以:

    QProcess cmdProcess;
    ...
    cmdProccess.start(..);
    while(cmdProcess.waitForReadyRead(-1)) someParseFunction(cmdProcess.readAllStandardOutput());
    

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      相关资源
      最近更新 更多