C#读网卡MAC地址-WMI方法

    昨天听测试组的工程师们在讨论怎么用批处理(DOS)把MAC都出来,保存到文本文件中。观察了一会,看的蛋疼。然后网上搜了一通代码,互联网的搬码工的活就算完了。测试也OK。

    今天又回头看了一下,算法凌乱不堪。整理整理就是一天,时间过得还真是快。现在发出了,一是备不时之用;二是有人看到了,需要的话也能省点事,不用到处找。当然是和我一样屌丝的菜鸟:)。

代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
namespace GetDMIDataByWMI
{
    class Program
    {
        //主板编号
        public static void GetBoardSN()
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_BIOS");
            foreach (ManagementObject mo in mos.Get())
            {
                ColorConsoleWriteLine("SerialNumber:");
                Console.WriteLine(mo["SerialNumber"].ToString());
                if (saveSN)
                {
                    Save2File(mo["SerialNumber"].ToString());
                }               
            }
        }
        //Mac address
        public static void GetMacAddress()
        {
            //获取网卡硬件地址   
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc2 = mc.GetInstances();
            foreach (ManagementObject mo in moc2)
            {
                if((mo["MacAddress"]!=null)&&
                   (!mo["Description"].ToString().Contains("Microsoft"))&&
                   (!mo["Description"].ToString().Contains("Bluetooth"))&&(
                   (mo["Description"].ToString().Contains("Qualcomm"))||
                   (mo["Description"].ToString().Contains("Realtek"))||
                   (mo["Description"].ToString().Contains("Broadcom"))))
                {
                    ColorConsoleWriteLine("Mac Address:");
                    Console.WriteLine(mo["MacAddress"].ToString());
                    if(saveMAC)
                        Save2File(mo["MacAddress"].ToString());
                    Console.WriteLine(mo["Description"].ToString());
                    mo.Dispose();
                }
            }
        }
        static void ShowEnvironmentDetails()
        {
            //输出本机的驱动器以及其他一些有用的细节信息
            foreach (string drive in Environment.GetLogicalDrives())
                Console.WriteLine("Drive:{0}", drive);
            Console.WriteLine("OS:{0}", Environment.OSVersion);
            Console.WriteLine("Number of processors:{0}", Environment.ProcessorCount);
            Console.WriteLine(".NET Version:{0}", Environment.Version);
            Console.WriteLine(Environment.MachineName);
            Console.WriteLine(Environment.SystemDirectory);
            Console.WriteLine(Environment.Is64BitOperatingSystem);
            Console.WriteLine(Environment.CurrentDirectory);
        }
        static void ColorConsoleWriteLine(string str)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(str.ToString());
            Console.ForegroundColor = ConsoleColor.Blue;
        }
        static void ParseCmdLine(string[] args)
        {
            bool tip = false;
            for (int i = 0; i < args.Length; i++)
            {
                var name = args[i];
                if (name[0] != '-')
                {
                    if (i == args.Length - 1)
                    {
                        tip = true;
                    }
                    continue;
                }
                var value = "";
                if (i + 1 < args.Length)
                    value = args[++i];
                if (name == "-s")
                {
                    doSave = value;
                }
                else if (name == "-sn")
                {
                    saveSN = (value == "true" || value == "1");
                }
                else if (name == "-mac")
                {
                    saveMAC = (value == "true" || value == "1");
                }
                else
                {
                    tip = true;
                }
            }
            if ((tip) || (args.Length == 0))
            {
                ColorConsoleWriteLine("You can use -s -sn -mac parameters!");
            }
        }
        static void Save2File(string str)
        {
            if (doSave.Contains(".txt"))
            {
                using (var sw = new StreamWriter(doSave, true))
                {
                    TextWriter oldOut = Console.Out;
                    Console.SetOut(sw);
                    Console.WriteLine(str);
                    Console.SetOut(oldOut);
                    sw.Flush();
                    sw.Close();
                }
            }
        }
        static void SetBackgroundColor()
        {
            Console.BackgroundColor = ConsoleColor.Magenta;
            Console.Clear();//must be invoked when change background color
        }
        static string doSave = "";
        static bool saveSN = false;
        static bool saveMAC = false;
        static void Main(string[] args)
        {
            //change background first(can do only  one time, why??????)
            SetBackgroundColor();
            //Parse command  //string[] theArgs = Environment.GetCommandLineArgs();
            ParseCmdLine(args);
            //ShowEnvironmentDetails();
            GetBoardSN();
            GetMacAddress();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值