用C#来编程获取MAC

来源:互联网 发布:windows字体文件在哪里 编辑:程序博客网 时间:2024/06/06 12:32

   1.选择C#中的 "类库" 来目;

   2.由于System.Management的动态链接库不是C#中默认加载的,,所以要添加System.Management的命名空间前要添加System.Management.dll链接库。依次选择:“项目”→“添加引用”→“.NET”菜单栏,加入System.Management。确认添加了动态链接库后添加命名空间:
using System.Management;
   3.要构造一个ManagementClass类管理定义为Win32_NetworkAdapter Configuration的WMI类,然后将ManagementClass类中的所有变量的值返回给属于ManagementObjectCollection类的变量,ManagementObjectCollection类用于表示WMI实例的不同集合,将不同集合中的各个MAC地址读出,就可获得多网卡的MAC地址。
构造ManagementClass,函数原型如下:
public ManagementClass(string path);
参数:path表示WMI的路径。
要返回ManagementClass所有实例的集合,使用GetInstances(),函数原型如下:
public ManagementObjectCollection GetInstances();

   4.创建项目,添加System.Management之后,输入代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;


namespace ClassLibrary1
{
    class Program
    {
        static void Main(string[] args)
        {
            ManagementClass mc;//定义一个ManagementClass类
            //将ManagementClass类变量定义为Win32_NetworkAdapter Configuration,以便获得//网络信息
            mc=new ManagementClass("Win32_NetworkAdapterConfiguration");
            //使用ManagementObjectCollection记录mc中的所有信息,包括多个网卡信息
            ManagementObjectCollection moc=mc. GetInstances();
            //取得ManagementObjectCollection中的不同网卡配置信息,判断如果该网卡可用就//去读取MAC地址
            foreach(ManagementObject mo in moc)
            {
                if (mo["IPEnabled"].ToString() == "True")
                    Console.WriteLine("MAC  address" + mo["MacAddress"].ToString());
            }
        }
    }
}

    5.点击调试运行可能报错---“无法直接启动带有”类库输出类型“。若要调试则在解决方案中添加一个引用库项目的可执行项目,并设置成启动项目”
  解决方法:(1)右击项目,选择”设置自动启动“
            (2)右击项目,选择”属性“,改变”输出类型“为”控制台应用程序“(这方法在此中正确)
(3)右击解决方案,选择”属性“,改变”单启动项目“
0 0