启用禁用外网

接着上次的小工具启用禁用外网,也不是什么高技术含量的,拿来用就行了,所以这里就不多说明,代码里有简单介绍

启用禁用外网方法

        public bool ForbiddenNetWork(bool isForbidden)
        {
            try
            {
                //禁用dns
                if (isForbidden)
                {
                    //如果双网卡:114.114.114.114|115.115.115.115|116.116.116.116 8.8.8.8
                    List<string[]> getDNSList = NetWorkSettingHelper.GetDNS();
                    if (getDNSList.Count <= 0)
                    {
                        VertifyPwd.isWlan = !setConfig.isForbiddenNetWork;
                        ErrorCollectHelper.InfoLog("禁用DNS", "获取DNS为空,不做任何设置");
                        return false;
                    }
                    //禁用dns
                    List<string[]> newgateways = new List<string[]>();
                    for (int j = 0; j < getDNSList.Count; j++)
                    {
                        //strDns网卡:114.114.114.114|115.115.115.115|116.116.116.116
                        string[] strDns = getDNSList[j];
                        //禁用dns
                        string[] forbiddenDns = new string[strDns.Length];
                        for (int i = 0; i < strDns.Length; i++)
                        {
                            //dns:1.1.1.1
                            forbiddenDns[i] = string.Format("{0}.{0}.{0}.{0}", i + 1);
                        }
                        //需要设置禁用的dns为1.1.1.1,默认不处理
                        if (string.Equals(string.Join("|", strDns), string.Join("|", forbiddenDns), StringComparison.OrdinalIgnoreCase))
                        {
                            VertifyPwd.isWlan = !setConfig.isForbiddenNetWork;
                            ErrorCollectHelper.InfoLog("禁用DNS", "DNS为1.1.1.1等默认值,不做任何设置");
                            return false;
                        }
                        else//保存dns状态,可能多网卡,目前最多考虑双网卡
                        {
                            if (j == 0)
                            {
                                setConfig.dns0 = string.Join("|", strDns);
                            }
                            else if (j == 1)
                            {
                                setConfig.dns1 = string.Join("|", strDns);
                            }
                        }
                        //禁用dns
                        newgateways.Add(forbiddenDns);
                    }
                    NetWorkSettingHelper.SetDNS(newgateways);
                    //保存dns
                    setConfig.isForbiddenNetWork = true;
                    VertifyPwd.isWlan = false;
                    setConfig.Save();
                }
                else//启用dns
                {
                    //默认最多考虑双网卡
                    List<string[]> getDNSList = new List<string[]>();
                    if (!string.IsNullOrEmpty(setConfig.dns0))
                    {
                        getDNSList.Add(setConfig.dns0.Split(‘|‘));
                    }
                    if (!string.IsNullOrEmpty(setConfig.dns1))
                    {
                        getDNSList.Add(setConfig.dns1.Split(‘|‘));
                    }
                    if (getDNSList.Count > 0)
                    {
                        NetWorkSettingHelper.SetDNS(getDNSList);
                        setConfig.isForbiddenNetWork = false;
                        VertifyPwd.isWlan = true;
                        setConfig.Save();
                        return true;
                    }
                    else
                    {
                        VertifyPwd.isWlan = !setConfig.isForbiddenNetWork;
                        ErrorCollectHelper.InfoLog("启用DNS", "没有找到保存的DNS,无法启用");
                        return false;
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                ErrorCollectHelper.ErrorLog("设置网络访问错误", ex.ToString());
                return false;
            }
        }

网络设置的一个Helper

    public class NetWorkSettingHelper
    {

        public static void SetDNS(List<string[]> getways)
        {
            try
            {
                ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = wmi.GetInstances();
                ManagementBaseObject inPar = null;
                ManagementBaseObject outPar = null;
                int n = 0;

                foreach (ManagementObject mo in moc)
                {
                    //如果没有启用IP设置的网络设备则跳过
                    if (!(bool)mo["IPEnabled"])
                        continue;

                    //设置网关地址
                    if (getways.Count > 0)
                    {
                        //如果dns为空,则if判断永远为false,因此注释
                        //if (mo["DNSServerSearchOrder"] != null && (mo["DNSServerSearchOrder"] as String[])[0] != null)
                        //{
                            inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
                            inPar["DNSServerSearchOrder"] = getways[n++];
                            outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
                       // }
                    }
                    mo.Clone();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<string[]> GetDNS()
        {
            try
            {
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection nics = mc.GetInstances();
                List<string[]> getways = new List<string[]>();
                foreach (ManagementObject nic in nics)
                {
                    if (Convert.ToBoolean(nic["ipEnabled"]))
                    {
                        if (nic["DNSServerSearchOrder"] != null && (nic["DNSServerSearchOrder"] as String[])[0] != null)
                        {
                            getways.Add(nic["DNSServerSearchOrder"] as String[]);
                        }
                        nic.Clone();
                    }
                }
                return getways;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

初始默认dns存在配置文件里,setConfig就是那个存储的

时间: 2024-08-28 20:57:36

启用禁用外网的相关文章

Lync Server 2013 部署 _ 启用移动端功能及外网发布

移动端功能默认不是启用的,我们需要先安装最新的Lync补丁,然后进行数据库更新,最后才可以进行Lync移动端的使用,下图是各手机系统支持的Lync功能(图片来源于网络) = = 更新Lync补丁 1)去官网下载更新https://www.microsoft.com/en-us/download/confirmation.aspx?id=36820,然后在所有Lync Server上安装补丁包 2)前端服务器安装补丁,有17个补丁 3)LyncEdge安装补丁,边缘4个补丁 4)安装完成后重新启动

Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess

http://www.jb51.net/article/61193.htm ———————————————————————————————————————————— 这篇文章主要介绍了Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess,需要的朋友可以参考下 Apache 从2.2升级到 Apache2.4.x 后配置文件 httpd.conf 的设置方法有了大变化,以前是将 deny from all 全部改成 Allow from all 实现外

SQL Server 临时禁用和启用所有外键约束

--获得禁用所有外键约束的语句 select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' as 禁用约束 from sysobjects a ,sysobjects b where a.xtype ='f' and a.parent_obj = b.id --获得启用所有外键约束的语句 select 'ALTER TABLE [' + b.name + '] CHECK CONSTRAINT ' + a.nam

禁用上外网、内网可以访问

需求:1.一些授权软件购买中,临时使用盗版2.但是工程师需要上网查资料,上微信,下载东西,如何实现此需求? 解决方案:a:找到对应盗版软件的后门,直接禁用(本人没有找到)b:禁用安装盗版软件电脑上外网,只能内网访问.同时设置几个虚拟账号,可以让禁用上网的人远程服务器上外网. 解决:1.上网行为管理直接控制外网访问 或者直接清dns,默认dns为空2.远程服务器设置https://jingyan.baidu.com/article/ca00d56c384ea0e99febcf45.html需要wi

oracle查看禁用/启用/删除外键约束sql

1.查看禁用外键sql select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'; 2.查看启用外键sql select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constrai

sql server 2008 开启外网访问功能

在设置外网访问SQL2008数据库 之前,首先必须保证局域网内访问SQL2008没有问题 .那么,我们先来看看局域网内访问SQL2008数据库需要哪些步骤和设置,才能做到在局域网内任何一台机器上输入SQL2008数据库IP地址和端口号即能访问. 1.SQL2008数据库端设置 通常一台机器装上SQL2008后,要实现局域网访问SQL2008只要几步. 1)打开SQL2008配置工具,步骤:[开始]—>[所有程序]—>[Microsoft SQL Server 2008]—>[Config

Outlook anywhere无法从外网连接exchange server 2007

Outlook anywhere无法从外网连接exchange server 2007 当一个使用 Outlook Anywhere 的客户端尝试连接 Windows Server 2008 上运行的 Exchange 2007 SP1 时,该客户端将失败.这是因为在 Windows Server 2008 上运行的客户端访问服务器上的 RPCProxy 组件无法通过端口 6004 来连接 Exchange 邮箱服务器上的 DSProxy 组件. Windows Server 2008 已将 T

关于Linux 虚拟机如何才能ping 通外网

需要虚拟机能够联网.以前都是用桥接模式让虚拟机跟主机通信,这几天查了好多资料,都没有写得很详细,自己捣鼓了很久,把步骤写下来吧. 虚拟机操作步骤: 点击虚拟机的"菜单栏"上的"编辑",再点击"虚拟网络编辑器",接着的操作如下图所示: 然后选择添加vm8 ,点确定之后会出现以下界面,如下图所示 接着点"NAT设置" 然后接着以下步骤 设置完成之后点"确定",再依次点击"应用"和"

Centos 7 安装redis,修改配置文件不生效、外网不能访问。

前提: 在用Centos 7 安装 redis 时,遇上一下几个问题 ,记录下 . 1.修改配置文件,按官网步骤启动,不生效. 2.外网无法访问redis. 步骤: 1.打开centos 虚拟机 ,按官网文档,下载文件及安装 .https://redis.io/download 2.启动服务后,发现外网无法连接redis,于是拷贝解压包下配置文件redis.conf文件为redis02.conf ,修改redis.conf文件内容如下. 改前 改后 说明 bind 127.0.0.1 #bind