C# 获取计算机信息 统计电脑 上传数据库

方便有几百台电脑的公司,上传电脑信息到数据库。

链接: https://pan.baidu.com/s/14MQFIlOIIsqLr_d-RYKKYA
提取码: pfwb 复制这段内容后打开百度网盘手机App,操作更方便哦

没有数据库的,则提供存在公共盘的CSV文件方法。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
//using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
//using System.Threading.Tasks;
using System.Windows.Forms;
//using System.Linq;
using System.Management;
using System.Linq;
using System.IO;

namespace ComputerSN
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //hostname
            //string HostName=CMD("hostname");
            //HostName = HostName.Substring(HostName.IndexOf("exit")+4, HostName.Length - HostName.IndexOf("exit")-4).Replace("\r\n","");
            string HostName = "";
            try
            {
                HostName = Environment.MachineName;
            }
            catch (Exception)
            {
                //throw;
            }


            //wmic bios get serialnumber
            string SerialNumber = "";
            try
            {
                SerialNumber = CMD("wmic bios get serialnumber");
                SerialNumber = SerialNumber.Substring(SerialNumber.IndexOf("SerialNumber") + 12, SerialNumber.Length - SerialNumber.IndexOf("SerialNumber") - 12)
                    .Replace("\r", "").Replace("\n", "").Replace(" ", "");
            }
            catch (Exception)
            {
                //throw;
            }


            //whoami
            //string UserName = CMD("whoami");
            //UserName = UserName.Substring(UserName.IndexOf("exit") + 4, UserName.Length - UserName.IndexOf("exit") - 4).Replace("\r\n", "");
            string UserName = "";
            try
            {
                UserName = Computer.GetUserName();
            }
            catch (Exception)
            {
                //throw;
            }

            string MonitorName = "";
            string displaySN = "";
            try
            {
                var disp = new ManagementObjectSearcher(@"root\wmi", "SELECT * FROM WmiMonitorID");
                var SN = (UInt16[])disp.Get().Cast<ManagementObject>().First()["SerialNumberID"];
                //string displaySN = "";
                //string display = string.Concat(sn.TakeWhile(x => x != 0).ToArray());
                for (int i = 0; i < SN.Length; i++)
                {
                    displaySN = displaySN + ((char)SN[i]).ToString();
                }
                displaySN = displaySN.Replace("\0", "");

                var displayName = (UInt16[])disp.Get().Cast<ManagementObject>().First()["UserFriendlyName"];
                MonitorName = "";
                for (int i = 0; i < displayName.Length; i++)
                {
                    MonitorName = MonitorName + ((char)displayName[i]).ToString();
                }
                MonitorName = MonitorName.Replace("\0", "");
            }
            catch (Exception)
            {

                //throw;
            }

            string CPU_Name = "";
            try
            {
                CPU_Name = Computer.GetCpuName();
            }
            catch (Exception)
            {
                //throw;
            }

            string Memory = "0";
            try
            {
                Memory = (Math.Round(float.Parse(Computer.GetTotalPhysicalMemory()) / 1024 / 1024 / 1024, 0)).ToString();
            }
            catch (Exception)
            {
                //throw;
            }

            string DiskID = "";
            try
            {
                DiskID = Computer.GetDiskID();
            }
            catch (Exception)
            {

                //throw;
            }

            string OSVersion = "";
            try
            {
                OSVersion = Computer.GetOS();
                OSVersion = OSVersion.Substring(0, OSVersion.IndexOf("|"));
            }
            catch (Exception)
            {

                //throw;
            }

            string VideoCard = "";
            try
            {
                VideoCard = Computer.GetVideo();
            }
            catch (Exception)
            {
                //throw;
            }

            string ComputerModel = "";
            try
            {
                ComputerModel = Computer.GetComputerModel();
            }
            catch (Exception)
            {
                //throw;
            }

            string sql = $@"insert into PCInfo(PCName,PC_SN,UserName,MonitorSN,MonitorModel,CPU_Name
,Memory,DiskID,OSVersion,VideoCard,ComputerModel,UploadTime) 
values(N'{HostName}',N'{SerialNumber}',N'{UserName}',N'{displaySN}',N'{MonitorName}',N'{CPU_Name}',N'{Memory}',N'{DiskID}',N'{OSVersion}'
,N'{VideoCard}',N'{ComputerModel}',GETDATE())";
            if (SQLHelper.ExecuteNonQuery(sql) > 0)
            {
                //MessageBox.Show("获取成功");
                Query();
            }
            else
            {
                MessageBox.Show("重复获取");
            }


        }

        private string CMD(string cmd)
        {
            Process p = new Process();
            //设置要启动的应用程序
            p.StartInfo.FileName = "cmd.exe";
            //是否使用操作系统shell启动
            p.StartInfo.UseShellExecute = false;
            // 接受来自调用程序的输入信息
            p.StartInfo.RedirectStandardInput = true;
            //输出信息
            p.StartInfo.RedirectStandardOutput = true;
            // 输出错误
            p.StartInfo.RedirectStandardError = true;
            //不显示程序窗口
            p.StartInfo.CreateNoWindow = true;
            //启动程序
            p.Start();

            //向cmd窗口发送输入信息
            p.StandardInput.WriteLine(cmd + "&exit");

            p.StandardInput.AutoFlush = true;

            //获取输出信息
            string strOuput = p.StandardOutput.ReadToEnd();
            //strOuput = strOuput.Substring(strOuput.IndexOf("exit") + 4, strOuput.Length - strOuput.IndexOf("exit") - 4).Replace("\r\n", "");
            //等待程序执行完退出进程
            p.WaitForExit();
            p.Close();

            return strOuput;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Query();
            Query2();

        }
        private void Query2()
        {
            string Path = Application.StartupPath + @"\PCInfo.csv";
            DataTable dt = new DataTable();
            dt.Clear();
            dt = Dt(Path);
            dataGridView1.DataSource = dt;
        }
        private void Query()
        {
            string sql = $@"select * from PCInfo order by id desc";
            dataGridView1.DataSource = SQLHelper.GetDataTable(sql);
            DataGridViewAutoFit(dataGridView1);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            ExcelHelper.ToExcel2(dataGridView1.DataSource as DataTable);
        }

        public static void DataGridViewAutoFit(DataGridView Dgv)
        {
            Dgv.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(192, 255, 192);
            Dgv.BackgroundColor = System.Drawing.Color.FromArgb(192, 255, 255);
            //Dgv.Anchor = AnchorStyles.Top;
            //Dgv.Anchor = AnchorStyles.Left;
            //Dgv.Anchor = AnchorStyles.Right;
            //Dgv.Anchor = AnchorStyles.Bottom;
            Dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            Dgv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            Font Fn = new Font("", 9, FontStyle.Bold);
            Dgv.ColumnHeadersDefaultCellStyle.Font = Fn;
            Dgv.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
            Dgv.EditMode = DataGridViewEditMode.EditProgrammatically;
            Dgv.AllowUserToDeleteRows = false;
            Dgv.AllowUserToAddRows = false;
            Dgv.AllowUserToOrderColumns = true;
            if (Dgv.Rows.Count == 0)
            {
                return;
            }
            for (int i = 0; i < Dgv.Columns.Count; i++)
            {
                if (Regex.IsMatch(Dgv.Rows[0].Cells[i].Value.ToString(), @"^[+-]?\d*[.]?\d*$"))
                {
                    //MessageBox.Show(dataGridView1.Rows[0].Cells[i].ToString());
                    Dgv.Columns[i].DefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
                }
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string HostName = "";
            try
            {
                HostName = Environment.MachineName;
            }
            catch (Exception)
            {
                //throw;
            }


            //wmic bios get serialnumber
            string SerialNumber = "";
            try
            {
                SerialNumber = CMD("wmic bios get serialnumber");
                SerialNumber = SerialNumber.Substring(SerialNumber.IndexOf("SerialNumber") + 12, SerialNumber.Length - SerialNumber.IndexOf("SerialNumber") - 12)
                    .Replace("\r", "").Replace("\n", "").Replace(" ", "");
            }
            catch (Exception)
            {
                //throw;
            }


            //whoami
            //string UserName = CMD("whoami");
            //UserName = UserName.Substring(UserName.IndexOf("exit") + 4, UserName.Length - UserName.IndexOf("exit") - 4).Replace("\r\n", "");
            string UserName = "";
            try
            {
                UserName = Computer.GetUserName();
            }
            catch (Exception)
            {
                //throw;
            }

            string MonitorName = "";
            string displaySN = "";
            try
            {
                var disp = new ManagementObjectSearcher(@"root\wmi", "SELECT * FROM WmiMonitorID");
                var SN = (UInt16[])disp.Get().Cast<ManagementObject>().First()["SerialNumberID"];
                //string displaySN = "";
                //string display = string.Concat(sn.TakeWhile(x => x != 0).ToArray());
                for (int i = 0; i < SN.Length; i++)
                {
                    displaySN = displaySN + ((char)SN[i]).ToString();
                }
                displaySN = displaySN.Replace("\0", "");

                var displayName = (UInt16[])disp.Get().Cast<ManagementObject>().First()["UserFriendlyName"];
                MonitorName = "";
                for (int i = 0; i < displayName.Length; i++)
                {
                    MonitorName = MonitorName + ((char)displayName[i]).ToString();
                }
                MonitorName = MonitorName.Replace("\0", "");
            }
            catch (Exception)
            {

                //throw;
            }

            string CPU_Name = "";
            try
            {
                CPU_Name = Computer.GetCpuName();
            }
            catch (Exception)
            {
                //throw;
            }

            string Memory = "0";
            try
            {
                Memory = (Math.Round(float.Parse(Computer.GetTotalPhysicalMemory()) / 1024 / 1024 / 1024, 0)).ToString();
            }
            catch (Exception)
            {
                //throw;
            }

            string DiskID = "";
            try
            {
                DiskID = Computer.GetDiskID();
            }
            catch (Exception)
            {

                //throw;
            }

            string OSVersion = "";
            try
            {
                OSVersion = Computer.GetOS();
                OSVersion = OSVersion.Substring(0, OSVersion.IndexOf("|"));
            }
            catch (Exception)
            {

                //throw;
            }

            string VideoCard = "";
            try
            {
                VideoCard = Computer.GetVideo();
            }
            catch (Exception)
            {
                //throw;
            }

            string ComputerModel = "";
            try
            {
                ComputerModel = Computer.GetComputerModel();
            }
            catch (Exception)
            {
                //throw;
            }
            string sql = $@"insert into PCInfo(PCName,PC_SN,UserName,MonitorSN,MonitorModel,CPU_Name
,Memory,DiskID,OSVersion,VideoCard,ComputerModel,UploadTime) 
values(N'{HostName}',N'{SerialNumber}',N'{UserName}',N'{displaySN}',N'{MonitorName}',N'{CPU_Name}',N'{Memory}',N'{DiskID}',N'{OSVersion}'
,N'{VideoCard}',N'{ComputerModel}',GETDATE())";

            string Path = Application.StartupPath+@"\PCInfo.csv";
            string Content = $@"{HostName},{SerialNumber},{UserName},{displaySN},{MonitorName},{CPU_Name},{Memory},{DiskID},{OSVersion},{VideoCard},{ComputerModel},{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}";
            if (GetAddress(Path, HostName)!="")
            {
                MessageBox.Show("have info,not need write");
                return;
            }

            Write(Path,Content);
            Query2();
            
        }

        public void Write(string path,string Content)
        {
            //FileStream fs = new FileStream(path, FileMode.Create);
            StreamWriter sw = new StreamWriter(path, true);
            //开始写入
            sw.WriteLine(Content);
            //清空缓冲区
            sw.Flush();
            //关闭流
            sw.Close();
        }
        String GetAddress(string path, String searchName)
        {
            var strLines = File.ReadAllLines(path);
            foreach (var line in strLines)
            {
                if (line.Split(',')[0].Equals(searchName))
                    return line.ToString();
            }
            return "";
        }

        private DataTable Dt(string path)
        {
            var strLines = File.ReadAllLines(path);
            int n = 0;
            DataTable dt = new DataTable();
            dt.Clear();
            string[] list = new string[12];
            foreach (var line in strLines)
            {
                if (n == 0)
                {
                    list = line.Split(',');
                    for (int i = 0; i < 12; i++)
                    {
                        dt.Columns.Add(list[i], typeof(string));
                    }
                }
                else
                {
                    list = line.Split(',');
                    dt.Rows.Add();
                    dt.Rows[n - 1][0] = list[0].ToString();
                    dt.Rows[n - 1][1] = list[1].ToString();
                    dt.Rows[n - 1][2] = list[2].ToString();
                    dt.Rows[n - 1][3] = list[3].ToString();
                    dt.Rows[n - 1][4] = list[4].ToString();
                    dt.Rows[n - 1][5] = list[5].ToString();
                    dt.Rows[n - 1][6] = list[6].ToString();
                    dt.Rows[n - 1][7] = list[7].ToString();
                    dt.Rows[n - 1][8] = list[8].ToString();
                    dt.Rows[n - 1][9] = list[9].ToString();
                    dt.Rows[n - 1][10] = list[10].ToString();
                    dt.Rows[n - 1][11] = list[11].ToString();
                }
                n = n + 1;
            }
            return dt;
        }
    }
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值