【C#】通過二維碼獲取電腦硬件信息

一,通過Nuget管理器下載導入ZXing二維碼生成庫

二,引入Management命名空間

三,winform新建PictureBox控件

四,寫入代碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ZXing;
using ZXing.QrCode;
using System.Net.Sockets;
using System.Net;
using System.Management;
using System.IO;

namespace QR
{
    public partial class Form1 : Form
    {
        public string CpuID;
        public string Memory;
        public string MacAddress;
        public string DiskID;
        public string SystemType;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            BarcodeWriter writer = new BarcodeWriter();
            writer.Format = BarcodeFormat.QR_CODE;
            QrCodeEncodingOptions options = new QrCodeEncodingOptions()
            {
                DisableECI = true,
                CharacterSet = "UTF-8",
                Width = pictureBox1.Width,
                Height = pictureBox1.Height,
                Margin = 1
            };

            string hostName = Dns.GetHostName();
            IPHostEntry localhost = Dns.GetHostByName(hostName);
            IPAddress localaddr = localhost.AddressList[0];
            string IpAddr = localaddr.ToString();

            CpuID = GetCpuID();
            Memory = GetTotalPhysicalMemory();
            DiskID = GetDiskID();
            MacAddress = GetMacAddress();

            string msg = ("IP地址:" + IpAddr + "\nCPU:" + CpuID + "\n內存:" + Memory + "B\n硬盤信息:" + DiskID + "\nMAC地址:" + MacAddress);
            writer.Options = options;
            ZXing.Common.BitMatrix bm = writer.Encode(msg);
            Bitmap map = writer.Write(bm);
            pictureBox1.Image = map;
        }


        string GetCpuID()
        {
            try
            {
                //獲取CPU序列號代碼
                string cpuInfo = "";//cpu序列號
                //Tuple<string, string> result = null;
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    cpuInfo = mo.Properties["Name"].Value.ToString();
                    

                }
                moc = null;
                mc = null;
                return cpuInfo;
            }
            catch
            {
                return "unknow";
            }
        }
        string GetTotalPhysicalMemory()
        {
            try
            {

                string st = "";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    st = mo["TotalPhysicalMemory"].ToString();
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }

        }
        string GetDiskID()
        {
            try
            {
                ////獲取硬盤ID
                //string HDid = "";
                //ManagementClass mc = new ManagementClass("Win32_DiskDrive");
                //ManagementObjectCollection moc = mc.GetInstances();
                //foreach (ManagementObject mo in moc)
                //{
                //    HDid = (string)mo.Properties["Model"].Value;


                //}
                //moc = null;
                //mc = null;
                //return HDid;
                
                    DriveInfo[] drives = DriveInfo.GetDrives();
                    StringBuilder sr = new StringBuilder();
                    foreach (DriveInfo drive in drives)
                    {
                        if (drive.IsReady)
                        {
                            var val1 = (double)drive.TotalSize / 1024 / 1024;
                            var val2 = (double)drive.TotalFreeSpace / 1024 / 1024;
                            sr.AppendFormat("{0}:{2}/{3}MB/{4}MB/{1}%可用;\n", drive.Name, string.Format("{0:F2}", val2 / val1 * 100), drive.DriveFormat, (long)val1, (long)val2);
                        }
                    }
                    return sr.ToString();
            }
            catch
            {
                return "unknow";
            }

        }
        string GetMacAddress()
        {
            try
            {
                //獲取網卡硬件地址
                string mac = "";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        mac = mo["MacAddress"].ToString();
                        break;
                    }
                }
                moc = null;
                mc = null;
                return mac;
            }
            catch
            {
                return "unknow";
            }

        }
    }
}

五,執行生成

六,掃描結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章