C# 除非我的自定义白名单批准,否则如何阻止Windows 10上的所有web请求?
我想用C为我的孩子们写一个非常简单的网络流量拦截器我是一名经验丰富的C#开发人员。我想要以下基本功能:C# 除非我的自定义白名单批准,否则如何阻止Windows 10上的所有web请求?,c#,.net,network-programming,C#,.net,Network Programming,我想用C为我的孩子们写一个非常简单的网络流量拦截器我是一名经验丰富的C#开发人员。我想要以下基本功能: 白名单链接到特定的Windows 10用户帐户(程序将知道谁登录) 所有网站被屏蔽,除非特别列入白名单 除非管理员允许,否则无法关闭或卸载此小软件 当试图访问被阻止的站点时,我的程序会弹出一个弹出窗口,允许用户请求访问 这个程序需要比任何浏览器的级别都低,所以它会阻止所有浏览器中的流量,甚至是嵌入浏览器控件或类似浏览器功能的程序。我猜操作系统知道何时启动web请求以及请求哪些站点,所以我需要
- 白名单链接到特定的Windows 10用户帐户(程序将知道谁登录)
- 所有网站被屏蔽,除非特别列入白名单
- 除非管理员允许,否则无法关闭或卸载此小软件
- 当试图访问被阻止的站点时,我的程序会弹出一个弹出窗口,允许用户请求访问
- 这个程序需要比任何浏览器的级别都低,所以它会阻止所有浏览器中的流量,甚至是嵌入浏览器控件或类似浏览器功能的程序。我猜操作系统知道何时启动web请求以及请求哪些站点,所以我需要知道如何进入操作系统级别的事件
注意:我在谷歌上搜索过,但找不到任何我想要的东西,所以我想建立自己的。提前感谢。要可靠地做到这一点,您需要编写某种*DLL注入,跳入正在运行的应用程序的地址空间,并代理对套接字的所有调用,以根据需要对其进行操作(理想情况下是在内核模式下,您还可以侦听创建进程,但无法卸载该进程)。您可以在用户模式下使用SetWindowHookEx,但它不会是100%防弹的,有一些库可以完成这项艰巨的工作,您所要做的就是编写代理代码,但它也不能在C#中完成。我建议看一看路由器,或者买一些现成的防火墙软件或解决方案,这样做更有意义。不要重新发明轮子。大多数路由器允许您打开白名单系统。如果你不想被它阻碍,那就换一个你孩子的电脑连接的路由器。现在你可能会说“但是windows不允许你控制个人用户的WiFi网络”,这是你可以写一些C#的地方。我建议您考虑一下基于路由器的解决方案。或者,如果您愿意强迫他们使用Edge作为web浏览器,请使用。无论如何,尽管这个问题很有趣,但它太宽泛了