我正在开发一个能够确定使用互联网的应用程序的应用程序。现在我的问题是,我想在成功建立连接之前知道进程名称,就像防火墙一样。如何获取试图访问互联网的exe名称?
我正在使用Delphi2009。所以这项技术的建议值得赞赏。
我正在开发一个能够确定使用互联网的应用程序的应用程序。现在我的问题是,我想在成功建立连接之前知道进程名称,就像防火墙一样。如何获取试图访问互联网的exe名称?
我正在使用Delphi2009。所以这项技术的建议值得赞赏。
查看Winsock Layered Service Providers来监控流量。我认为LSP是加载到每个进程中的DLL,所以当加载DLL时,您应该能够调用GetModuleFileName(NULL)来发现EXE名称。
维基百科的文章上面分享我的强烈关注链接:
一个主要与LSP的共同问题是,如果他们被删除 或未注册的不当,或者如果LSP是越野车,这将导致 在注册表中Winsock目录的损坏,以及整个TCP/IP堆栈将会中断,并且计算机不能再访问 网络。
因此,如果您是Windows编程的新手和/或未采取适当的预防措施来编写这些类型的过滤器驱动器,请仔细行事。否则,程序中的错误将很容易造成用户的机器故障。
感谢您提到预防措施。 –
任何代码片段将不胜感激。 –
你是如何挂钩的连接开始?它在访问套接字IP /端口信息的方式上有所不同。一旦你有了,你可以在操作系统的网络表中查找进程ID,然后你可以打开进程并查询它的文件名。 –
一旦你知道尝试访问网络的EXE的名字,你会怎么做? – selbie
@ selbie--之后,我有两个选项阻止或允许它访问网络。 –