2013-07-10 49 views
0

我正在开发一个能够确定使用互联网的应用程序的应用程序。现在我的问题是,我想在成功建立连接之前知道进程名称,就像防火墙一样。如何获取试图访问互联网的exe名称?

我正在使用Delphi2009。所以这项技术的建议值得赞赏。

+0

你是如何挂钩的连接开始?它在访问套接字IP /端口信息的方式上有所不同。一旦你有了,你可以在操作系统的网络表中查找进程ID,然后你可以打开进程并查询它的文件名。 –

+0

一旦你知道尝试访问网络的EXE的名字,你会怎么做? – selbie

+0

@ selbie--之后,我有两个选项阻止或允许它访问网络。 –

回答

1

查看Winsock Layered Service Providers来监控流量。我认为LSP是加载到每个进程中的DLL,所以当加载DLL时,您应该能够调用GetModuleFileName(NULL)来发现EXE名称。

维基百科的文章上面分享我的强烈关注链接:

一个主要与LSP的共同问题是,如果他们被删除 或未注册的不当,或者如果LSP是越野车,这将导致 在注册表中Winsock目录的损坏,以及整个TCP/IP堆栈将会中断,并且计算机不能再访问 网络。

因此,如果您是Windows编程的新手和/或未采取适当的预防措施来编写这些类型的过滤器驱动器,请仔细行事。否则,程序中的错误将很容易造成用户的机器故障。

+0

感谢您提到预防措施。 –

+0

任何代码片段将不胜感激。 –