方便有几百台电脑的公司,上传电脑信息到数据库。
链接: 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;
}
}
}