zoukankan      html  css  js  c++  java
  • 利用win服务定时为网卡启用/禁用

    上周,Boss和我说,他儿子夜里爬起来用笔记本在被窝里玩CF,问路由器可以解决么,我看了是TPLINK的普通家用无线路由器,不支持禁用CF客户端网游,可以通过配置端口屏蔽什么的,但是白天又要开启,想想麻烦。还是写个win服务,定时禁用网卡和定时启用网卡。

    思路是分为两步,

    1. 要先获取到无线网卡的ID。

    2. 然后定时关闭/启用这个无线网卡。

    程序呢,也是分为2部分,

    1. 用了winform 去获取所有网络适配器信息,看看找到无线网卡,然后记下网卡名。

    2. 用win服务去遍历Win32_NetworkAdapter 的信息,符合网卡的,就InvokeMethod, Disable/Enable 。

    很简单,winform程序就遍历了下Win32_NetworkAdapter,然后2个按钮来测试是否可以正常关闭 和 开启无线网卡。

    有点需要注意,需要引用System.Management.dll ,using System.Management;

     1 /// <summary>
     2         /// 网卡列表
     3         /// </summary>
     4         public void NetWorkList()
     5         {
     6             string manage = "SELECT * From Win32_NetworkAdapter";
     7             ManagementObjectSearcher searcher = new ManagementObjectSearcher(manage);
     8             ManagementObjectCollection collection = searcher.Get();
     9             List<string> netWorkList = new List<string>();
    10             foreach (ManagementObject obj in collection)
    11             {
    12                 netWorkList.Add(obj["Name"].ToString());
    13                 label5.Text += obj["Name"].ToString() + "
    ";
    14             }
    15             this.cmbNetWork.DataSource = netWorkList;
    16         }
    17 
    18         /// <summary>
    19         /// 网卡状态
    20         /// </summary>
    21         /// <param name="netWorkName">网卡名</param>
    22         /// <returns></returns>
    23         public bool NetWorkState(string netWorkName)
    24         {
    25             string netState = "SELECT * From Win32_NetworkAdapter";
    26             ManagementObjectSearcher searcher = new ManagementObjectSearcher(netState);
    27             ManagementObjectCollection collection = searcher.Get();
    28             foreach (ManagementObject manage in collection)
    29             {
    30                 if (manage["Name"].ToString() == netWorkName)
    31                 {
    32                     return true;
    33                 }
    34             }
    35             return false;
    36         }
    37 
    38         /// <summary>
    39         /// 得到指定网卡
    40         /// </summary>
    41         /// <param name="networkname">网卡名字</param>
    42         /// <returns></returns>
    43         public ManagementObject NetWork(string networkname)
    44         {
    45             string netState = "SELECT * From Win32_NetworkAdapter";
    46             ManagementObjectSearcher searcher = new ManagementObjectSearcher(netState);
    47             ManagementObjectCollection collection = searcher.Get();
    48             foreach (ManagementObject manage in collection)
    49             { 
    50                 if (manage["Name"].ToString() == networkname)
    51                 { 
    52                     return manage; 
    53                 }
    54             }
    55             return null;
    56         }
    获取网卡列表 网卡状态 得到指定网卡
     1    /// <summary>
     2         /// 禁用网卡
     3         /// </summary>5
     4         /// <param name="netWorkName">网卡名</param>
     5         /// <returns></returns>
     6         private static bool DisableNetWork(ManagementObject network)
     7         {
     8             try
     9             {
    10                 network.InvokeMethod("Disable", null);
    11                 return true;
    12             }
    13             catch
    14             {
    15                 return false;
    16             }
    17         }
    18         /// <summary>
    19         /// 启用网卡
    20         /// </summary>
    21         /// <param name="netWorkName">网卡名</param>
    22         /// <returns></returns>
    23         private static bool EnableNetWork(ManagementObject network)
    24         {
    25             try
    26             {
    27                 network.InvokeMethod("Enable", null);
    28                 return true;
    29             }
    30             catch
    31             {
    32                 return false;
    33             }
    34         }
    启用/禁用网卡

    再来就是 windows服务,代码其实就是和winform程序一样,没啥区别,只是定时注意下,另appconfig 配置节点: 

    网卡名称,禁止时间、启用时间。

    代码下载 (控件、方法、判断空等规则可以无视,这里只是作为测试用的)

    【版权声明】转载请注明出处:  http://www.cnblogs.com/yiayi/p/3526735.html

  • 相关阅读:
    Xcode修改新建项目注释模板(作者和公司名等)
    Xcode全局替换内容,一键Replace
    The type javax.ws.rs.core.MediaType cannot be resolved. It is indirectly referenced from required .class files
    IT公司的女流之辈
    论公司的核心竞争力
    人性
    如何使用yum 下载 一个 package ?如何使用 yum install package 但是保留 rpm 格式的 package ? 或者又 如何通过yum 中已经安装的package 导出它,即yum导出rpm?
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files.
    maven repo plugin archiver
    Error connecting to database [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)]
  • 原文地址:https://www.cnblogs.com/yiayi/p/3526735.html
Copyright © 2011-2022 走看看