5

我希望有一个正在运行的应用程序或服务,它可以按某个时间表禁用除特定应用程序之外的所有应用程序对 Internet 的访问。

我正在尝试创建一个可以在程序控制下打开或关闭的过滤器。不仅仅是 IP 地址和端口,我还希望能够阻止特定的应用程序,就像 Zone Alarm 和其他软件防火墙让您阻止一样。

例如,iexplore.exe、skype.exe、firefox.exe、aim.exe。但仍需要允许其他应用程序根据需要进行连接。

它必须在 Vista 和 XP 上工作,但我有点希望该方法在每个平台上都会有所不同。

基本上,过滤器必须将网络通信绑定回发出请求的可执行文件,然后允许或拒绝它。

更新:

至少在Vista上,看起来我想在 WFP 的 ALE 层中使用过滤器。

XP上,我仍在寻找最好的方法。我真的需要编写设备驱动程序并处理内核内容吗?我只是一个低级的应用程序开发人员。现在杀了我。

更新 2:

目前正在研究 Pre-Vista 系统的 PfCreateInterface 和相关的 Pf* API。

4

6 回答 6

3

您可以使用Windows 防火墙 API中的INetFwAuthorizedApplications接口动态更改 Vista 和 XP 的防火墙策略。

另请参阅此问题

于 2009-01-09T04:58:34.673 回答
1

您必须编写一个设备驱动程序,根据请求流量的可执行文件过滤流量。

于 2009-01-08T05:36:41.197 回答
1

通过使用防火墙限制其访问互联网。转到防火墙设置高级选项卡(win 7)并执行此操作

于 2010-11-23T17:56:52.320 回答
0

我不确定,但我认为您需要通过让程序以具有有限权限的用户身份运行来做到这一点,问题是,您可以创建一个停止此类事情的用户帐户吗?

于 2009-01-08T05:32:42.547 回答
0

您需要将所有(或至少许多)对任何正在运行的程序的 WinSock API 函数的调用重定向到您自己的替换函数。这意味着进入每个正在运行的程序的内存并劫持这些功能,这是一个……有趣的……练习。:-)

这可能足以让您开始,或者至少提出一些更具体的问题要问。

于 2009-01-08T05:38:09.647 回答
0

你能把系统的winsock DLL移到一边(即重命名)并用你自己的替换它吗?您的应该提供相同的 API,但检查传入请求的进程名称...返回错误代码到被阻止的应用程序,并将来自允许应用程序的调用转发到真正的 DLL。

于 2009-01-08T13:19:32.243 回答