昨天听测试组的工程师们在讨论怎么用批处理(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;
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();
}
}
}
{
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();
}
}
}