C# 根据进程 ID 查找本地/远程地址
我使用 deviare API 来帮助我找出当前在桌面上运行的进程的 PID。谁能指导我或启发我如何根据我拥有的 PID 获取本地/远程 IP 地址及其端口号? (我应该使用什么 API?)
我想要这样的东西:
Public ArrayList GetRemoteAdder(int PID)
{
return remoteAddr;
}
我想根据我拥有的 PID 检索进程正在访问的远程 IP 地址。
I've used deviare API to help me find out the PIDs of the processes that are currently running on my desktop. Could anyone kindly guide me or enlighten me on how to get the local/remote IP address as well as their port numbers base on the PID I have? (What API should I make use of?)
I want something like this:
Public ArrayList GetRemoteAdder(int PID)
{
return remoteAddr;
}
I want to retrieve the remote IP Address that a process is accessing base on the PID that i have.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可能不是最好的方法,但一种快速的方法:
调用 netstat -n -o 并解析输出。通过 P/Invoke 求助于 Win32 魔法来做到这一点可能是一个更好的主意,但是您的用例(以及调用的频率......对于一次性的事情可能已经足够好了)尚不清楚。
这个签名对我来说也没有多大意义:GetRemoteAdder() 会返回什么?每个进程都可以轻松地侦听多个端口或打开一堆传出连接,因此单个字符串可能没有帮助。
Probably not the nicest way, but a quick one:
Call
netstat -n -o
and parse the output. It might be a better idea to resort to Win32 magic to do that via P/Invoke, but your usecase (and the frequency of the call.. For a one-time thing it might be good enough) is not clear.The signature doesn't make a lot of sense to me either: What would GetRemoteAdder() return? Every process can easily listen on multiple ports or open a bunch of outgoing connections, so a single string is probably not going to help.