【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";
            }

        }
    }
}

五,执行生成

六,扫描结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值