首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SharpPcap获取进程名称

SharpPcap获取进程名称
EN

Stack Overflow用户
提问于 2013-03-10 19:11:39
回答 1查看 518关注 0票数 1

我目前正在编写一个C#程序,它具有类似于wireshack的功能,使用SharpPcap来捕获数据包,使用PacketDotNet来获取有关数据包的信息。我想知道如何获取与数据包关联的进程名称??

EN

回答 1

Stack Overflow用户

发布于 2013-03-10 21:56:03

您可以通过解析来自netstat -o的输出来获得ProcessId,然后从Process.GetById获得进程名

这段代码可能会有帮助,但我不太擅长regexp :)

代码语言:javascript
复制
  var proc = new Process {
    StartInfo = new ProcessStartInfo {
      FileName = "netstat",
      Arguments = "-on",
      UseShellExecute = false,
      RedirectStandardOutput = true,
      CreateNoWindow = true
    }
  };

  proc.Start();
  Regex r = new Regex(@"\S+\s+(?<address>\S+)\s+\S+\s+\S+\s+(?<pid>\d+)");
  while (!proc.StandardOutput.EndOfStream) {
    var res = r.Match(proc.StandardOutput.ReadLine());
    if (res.Success) {
      var pid = int.Parse(res.Groups["pid"].Value);
      var address = res.Groups["address"].Value;
      Console.WriteLine("{0} - {1}", address, Process.GetProcessById(pid).ProcessName);
    }
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15321571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档