获取进程名
本文关键字:进程名 获取 | 更新日期: 2023-09-27 18:03:15
我目前正在编写一个c#程序,它具有与wireshack相似的功能,使用SharpPcap捕获数据包和PacketDotNet获取有关数据包的信息。我想知道如何获得与数据包相关的进程名称?
您可以通过解析netstat -o
的输出得到ProcessId
,然后从Process.GetById
得到进程名
可能这段代码会有帮助,但我不是很强大的regexp:)
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);
}
}