C#怎么实现本机网卡控制?(禁用和启用)!
有详细代码的最好,谢谢!!!
在线等...

解决方案 »

  1.   

    using   System.Management;
    使WMI获取网卡MAC地址,可以禁用网卡
      

  2.   

    //添加引用-COM-浏览-C:\WINDOWS\system32\shell32.dll-添加   
        
      private   bool   SetNetworkAdapter(bool   status)   
      {   
      const   string   discVerb   =   "禁用(&B)";   
      const   string   connVerb   =   "启用(&A)";   
      const   string   network   =   "网络和拨号连接";   
      const   string   networkConnection   =   "本地连接";   
      string   sVerb;   
        
      if   (status)   
      {   
        
      sVerb   =   connVerb;   
      }   
      else   
      {   
        
      sVerb   =   discVerb;   
      }   
        
      Shell32.Shell   sh   =   new   Shell32.Shell();   
      Shell32.Folder   folder;   
        
      folder   =   sh.NameSpace(3);       //Shell32.ShellSpecialFolderConstants.ssfCONTROLS   
      try   
      {   
      //进入控制面板的所有选项   
      foreach   (Shell32.FolderItem   myItem   in   folder.Items())   
      {   
      //进入网络和拔号连接   
      if   (myItem.Name   ==   network)   
      {   
      Shell32.Folder   fd   =   (Shell32.Folder)myItem.GetFolder;   
      foreach   (Shell32.FolderItem   fi   in   fd.Items())   
      {   
      //找到本地连接   
      if   (fi.Name.IndexOf(networkConnection)   >   -1)   
      {   
        
      //找本地连接的所有右键功能菜单   
      foreach   (Shell32.FolderItemVerb   Fib   in   fi.Verbs())   
      {   
      if   (Fib.Name   ==   sVerb)     
      {   
      Fib.DoIt();   
        
      break;   
      }   
      }   
      }   
      }   
      }   
      }   
      }   
      catch   (Exception   e)   
      {   
      MessageBox.Show(e.Message);   
      return   false;   
      }   
      ;   
      return   true;   
      }   
    试试。。
      

  3.   

    http://forums.microsoft.com/china/ShowPost.aspx?PostID=3666159&SiteID=15
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Management;
    using System.Collections;namespace NetWorkControl
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                NetWorkList();
            }        /// <summary>
            /// 网卡列表
            /// </summary>
            public void NetWorkList()
            {
                string manage = "SELECT * From Win32_NetworkAdapter";
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(manage);
                ManagementObjectCollection collection = searcher.Get();
                List<string> netWorkList = new List<string>();            foreach (ManagementObject obj in collection)
                {
                    netWorkList.Add(obj["Name"].ToString());
                    
                }
               this.cmbNetWork.DataSource = netWorkList;        }        /// <summary>
            /// 禁用网卡
            /// </summary>5
            /// <param name="netWorkName">网卡名</param>
            /// <returns></returns>
            public bool DisableNetWork(ManagementObject network)
            {
                try
                {
                    network.InvokeMethod("Disable", null);
                    return true;
                }
                catch
                {
                    return false;
                }
            }        /// <summary>
            /// 启用网卡
            /// </summary>
            /// <param name="netWorkName">网卡名</param>
            /// <returns></returns>
            public bool EnableNetWork(ManagementObject network)
            {
                try
                {
                    network.InvokeMethod("Enable", null );
                    return true;
                }
                catch
                {
                    return false;
                }
                
            }        /// <summary>
            /// 网卡状态
            /// </summary>
            /// <param name="netWorkName">网卡名</param>
            /// <returns></returns>
            public bool NetWorkState(string netWorkName)
            {
                string netState = "SELECT * From Win32_NetworkAdapter";
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(netState);
                ManagementObjectCollection collection = searcher.Get();
                foreach (ManagementObject manage in collection)
                {
                    if (manage["Name"].ToString() == netWorkName )
                    {
                        return true;
                    }
                }
                return false;
            }        /// <summary>
            /// 得到指定网卡
            /// </summary>
            /// <param name="networkname">网卡名字</param>
            /// <returns></returns>
            public ManagementObject NetWork(string networkname)
            {
                string netState = "SELECT * From Win32_NetworkAdapter";            ManagementObjectSearcher searcher = new ManagementObjectSearcher(netState);
                ManagementObjectCollection collection = searcher.Get();            foreach (ManagementObject manage in collection)
                {
                    if (manage["Name"].ToString() == networkname)
                    {
                        return manage;
                    }
                }            
                return null;
            }        private void btnStart_Click(object sender, EventArgs e)
            {
                if (NetWorkState(this.cmbNetWork.SelectedValue.ToString()))
                {
                    if (!EnableNetWork(NetWork(this.cmbNetWork.SelectedValue.ToString())))
                    {
                        MessageBox.Show("开启网卡失败!");
                    }
                    else
                    {
                        MessageBox.Show("开启网卡成功!");
                    }
                }
                else
                {
                    MessageBox.Show("网卡己开启!");
                }            NetWorkList();
            }        private void btnStop_Click(object sender, EventArgs e)
            {            if (NetWorkState(this.cmbNetWork.SelectedValue.ToString()))
                {
                    if (!DisableNetWork(NetWork(this.cmbNetWork.SelectedValue.ToString())))
                    {
                        MessageBox.Show("禁用网卡失败!");
                    }
                    else
                    {
                        MessageBox.Show("禁用网卡成功!");
                    }
                }
                else
                {
                    MessageBox.Show("网卡己禁用!");
                }            NetWorkList();
            }    }
    }
    摘的一段,希望对你有帮助
      

  4.   

    楼上的什么系统,Disable和Enable是不能调用的,至少在XP里