我希望有一个正在运行的应用程序或服务,在某些时间表上,可以禁用除特定应用程序之外的所有应用程序的Internet访问。
我正在尝试创建一个可以在程序控制下打开或关闭的过滤器。不仅仅是IP地址和端口,但我希望能够阻止特定的应用程序,就像区域警报和其他软件防火墙一样阻止你。
例如,iexplore.exe,skype.exe,firefox.exe,aim.exe。但仍需要允许其他应用程序根据需要进行连接。
它必须在Vista和XP上运行,但我希望这些方法在每个平台上都会有所不同。
基本上,过滤器必须将网络通信绑定到发出请求的可执行文件,然后允许或拒绝它。
更新:
至少在 Vista 上,看起来我想在ALE layers of the WFP中使用过滤器。
在 XP 上,我仍然在寻找最好的方法。我真的是否需要编写设备驱动程序并处理内核内容?我只是一个卑微的应用程序开发人员。现在杀了我。
更新2:
目前正在查看用于Vista之前系统的PfCreateInterface和相关的Pf * API。
答案 0 :(得分:3)
您可以使用Windows防火墙API中的INetFwAuthorizedApplications界面动态更改Vista和XP的防火墙策略。
另见question。
答案 1 :(得分:1)
您必须编写一个设备驱动程序,根据请求流量的可执行文件过滤流量。
答案 2 :(得分:1)
通过使用防火墙限制其对互联网的访问。转到防火墙设置高级选项卡(获胜7) 并且那样做
答案 3 :(得分:0)
我不确定,但我认为您需要通过让程序以具有有限权限的用户身份运行来实现,问题是,您是否可以创建一个停止此类操作的用户帐户?
答案 4 :(得分:0)
您需要将对所有正在运行的程序的WinSock API函数的所有(或至少很多)调用重定向到您自己的替换函数。这意味着进入每个正在运行的程序的内存并劫持这些函数,这是一个...... 有趣的 ......练习。 : - )
这可能足以让你开始,或至少提出一些更具体的问题。
答案 5 :(得分:0)
你可以放弃(即重命名)系统的winsock DLL并用你自己的DLL替换它吗? 您应该提供相同的API,但检查传入请求的进程名称...将错误代码返回给被阻止的应用程序,并将允许的应用程序的调用转发到真正的DLL上。