![第三方的弹出输入框用于密码登录]()
![远程连接SqlServer在系统防火墙入方向开启1433端口]()
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 计算机配置信息采集上传
{
public class ComputerMGT
{
public static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
public static int Insert(string name, string cpu, string memory, string diskInfo, string mb, string vga, string nic, string nicMac)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = conn.CreateCommand())
{
string sqlInsert = @"insert into ComputerInfo
(Name, CPU, Memory, DiskInfo, Mb, VGA, Nic, NicMac)
values
(@Name, @CPU, @Memory, @DiskInfo, @Mb, @VGA, @Nic, @NicMac);";
SqlParameter[] paras = {
new SqlParameter("@Name",name),
new SqlParameter("@CPU",cpu),
new SqlParameter("@Memory",memory),
new SqlParameter("@DiskInfo",diskInfo),
new SqlParameter("@Mb",mb),
new SqlParameter("@VGA",vga),
new SqlParameter("@Nic",nic),
new SqlParameter("@NicMac",nicMac)
};
cmd.CommandText = sqlInsert;
cmd.Parameters.AddRange(paras);
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
public static int Update(string name, string cpu, string memory, string diskInfo, string mb, string vga, string nic, string nicMac)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = conn.CreateCommand())
{
string sqlUpdate = @"update ComputerInfo
set Name=@Name, CPU=@CPU, Memory=@Memory, DiskInfo=@DiskInfo, Mb=@Mb, VGA=@VGA, Nic=@Nic
where NicMac=@NicMac;";
SqlParameter[] paras = {
new SqlParameter("@Name",name),
new SqlParameter("@CPU",cpu),
new SqlParameter("@Memory",memory),
new SqlParameter("@DiskInfo",diskInfo),
new SqlParameter("@Mb",mb),
new SqlParameter("@VGA",vga),
new SqlParameter("@Nic",nic),
new SqlParameter("@NicMac",nicMac)
};
cmd.CommandText = sqlUpdate;
cmd.Parameters.AddRange(paras);
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
public static bool Exist(string nicMac)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = conn.CreateCommand())
{
string sql = "select count(*) from ComputerInfo where NicMac=@NicMac;";
SqlParameter para = new SqlParameter("@NicMac", nicMac);
cmd.Parameters.Add(para);
cmd.CommandText = sql;
conn.Open();
object obj = cmd.ExecuteScalar();
return Convert.ToInt32(obj) > 0;
}
}
}
public static DataTable GetDataTable()
{
using (SqlDataAdapter ad = new SqlDataAdapter("select * from ComputerInfo order by Id;", connStr))
{
DataTable dt = new DataTable();
ad.Fill(dt);
return dt;
}
}
public static bool DataGridViewToExcel(DataGridView dgv, string fileName)
{
bool b = false;
try
{
if (dgv == null || dgv.RowCount == 0)
{
return b;
}
var excel = new ExcelPackage();
var workSheet = excel.Workbook.Worksheets.Add("Sheet1");
//添加标题
for (int i = 0; i < dgv.ColumnCount; i++)
{
workSheet.Cells[1, i + 1].Value = dgv.Columns[i].HeaderText;
workSheet.Cells[1, i + 1].Style.Font.Bold = true;
}
//添加数据
for (int row = 0; row < dgv.RowCount; row++)
{
for (int col = 0; col < dgv.ColumnCount; col++)
{
workSheet.Cells[row + 2, col + 1].Value = dgv[col, row].Value;
}
}
//调整列宽自适应
workSheet.Cells[1, 1, dgv.RowCount + 1, dgv.ColumnCount].AutoFitColumns();
excel.SaveAs(new System.IO.FileInfo(fileName));
b = true;
}
catch (Exception ex)
{
string resStr = ex.Message;
}
return b;
}
/// <summary>
/// 找开文件夹并选中导出的文件
/// </summary>
/// <param name="filePath">含全路径的文件名</param>
public static void OpenFolder(string filePath)
{
if (string.IsNullOrEmpty(filePath))
{
throw new ArgumentException("文件路径不能为空");
}
string folderPath = System.IO.Path.GetDirectoryName(filePath);
if (string.IsNullOrEmpty(folderPath))
{
throw new ArgumentException("无法获取文件夹路径");
}
Process.Start("explorer.exe", $"/select, \"{filePath}\"");
}
}
}
using System;
using System.Data;
using System.Windows.Forms;
using System.Management;
using Essy.Tools.InputBox;
namespace 计算机配置信息采集上传
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.textBox1.AppendText("========== 操作系统信息 ==========\r\n");
ManagementObjectSearcher searcher3 = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem");
foreach (ManagementObject os in searcher3.Get())
{
this.textBox1.AppendText("Caption: " + os["Caption"] + "\r\n"); // 这里会输出具体的操作系统名称,如"Microsoft Windows 10 Enterprise"等。
}
this.textBox1.AppendText("========== 电脑硬件信息 ==========\r\n");
this.textBox1.AppendText(HardwareInfo.GetCPUInfo());
this.textBox1.AppendText(HardwareInfo.GetMemoryInfo());
this.textBox1.AppendText(HardwareInfo.GetDiskInfo());
this.textBox1.AppendText(HardwareInfo.GetMotherboardInfo());
this.textBox1.AppendText(HardwareInfo.GetGPUInfo());
string nicMac;
this.textBox1.AppendText(HardwareInfo.GetNicInfo(out nicMac));
//this.textBox2.Text = nicMac;
this.textBox1.AppendText("=================================");
this.button2.Enabled = true;
this.txtName.Enabled = true;
}
private void button2_Click_1(object sender, EventArgs e)
{
//Id, Name, CPU, Memory, DiskInfo, Mb, VGA, Nic,NicMac
//name, cpu, memory, diskInfo, mb, vga, nic,nicMac
string name = this.txtName.Text.Trim();
string cpu = HardwareInfo.GetCPUInfo();
string memory = HardwareInfo.GetMemoryInfo();
string diskInfo = HardwareInfo.GetDiskInfo();
string mb = HardwareInfo.GetMotherboardInfo();
string vga = HardwareInfo.GetGPUInfo();
string nicMac;
string nic = HardwareInfo.GetNicInfo(out nicMac);
#region insert不要了
//string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//
//using (SqlConnection conn = new SqlConnection(connStr))
//{
// using (SqlCommand cmd = conn.CreateCommand())
// {
// string sqlInsert = @"insert into ComputerInfo
// (Name, CPU, Memory, DiskInfo, Mb, VGA, Nic, NicMac)
// values
// (@Name, @CPU, @Memory, @DiskInfo, @Mb, @VGA, @Nic, @NicMac);";
// SqlParameter[] paras = {
// new SqlParameter("@Name",name),
// new SqlParameter("@CPU",cpu),
// new SqlParameter("@Memory",memory),
// new SqlParameter("@DiskInfo",diskInfo),
// new SqlParameter("@Mb",mb),
// new SqlParameter("@VGA",vga),
// new SqlParameter("@Nic",nic),
// new SqlParameter("@NicMac",nicMac)
// };
// cmd.CommandText = sqlInsert;
// cmd.Parameters.AddRange(paras);
// conn.Open();
// if (cmd.ExecuteNonQuery() > 0)
// {
// MessageBox.Show("上传成功...");
// }
// else
// {
// MessageBox.Show("上传失败...");
// }
// }
//}
#endregion
if (ComputerMGT.Exist(nicMac))
{
if (ComputerMGT.Update(name, cpu, memory, diskInfo, mb, vga, nic, nicMac) > 0)
{
MessageBox.Show("上传并更新-->成功...");
}
else
{
MessageBox.Show("上传并更新-->失败...");
}
}
else
{
if (ComputerMGT.Insert(name, cpu, memory, diskInfo, mb, vga, nic, nicMac) > 0)
{
MessageBox.Show("上传-->成功...");
}
else
{
MessageBox.Show("上传-->失败...");
}
}
this.textBox1.Text = "";
this.txtName.Text = "";
this.button2.Enabled = false;
this.txtName.Enabled = false;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
DataTable dt = ComputerMGT.GetDataTable();
this.dataGridView1.DataSource = dt;
}
private void button4_Click(object sender, EventArgs e)
{
string[] strs = DateTime.Now.ToString().Split('-', ' ', ':');
string str = string.Join("", strs);
string fileName = @"excel\" + str + ".xlsx";
bool b = ComputerMGT.DataGridViewToExcel(dataGridView1, fileName);
if (b)
{
MessageBox.Show("导出Excel成功...");
ComputerMGT.OpenFolder(fileName);
}
else
{
MessageBox.Show("导出Excel失败...");
}
}
//管理
private void button5_Click(object sender, EventArgs e)
{
if (this.button5.Text == "管理")
{
string res = InputBox.ShowInputBox("请输入密码", true);
//MessageBox.Show((res==null).ToString());//测试 OK或cancel的返回值 空白确定返回"" 取消返回null
if (res == null)//点击取消了
{
return;
}
if (res == "4023364")
{
this.button1.Visible = false;
this.label1.Visible = false;
this.txtName.Visible = false;
this.button2.Visible = false;
this.textBox1.Visible = false;
this.dataGridView1.Visible = true;
this.button3.Visible = true;
this.button4.Visible = true;
this.button5.Text = "退出";
}
else
{
MessageBox.Show("密码不对...");
}
}
else//退出
{
this.button1.Visible = true;
this.label1.Visible = true;
this.txtName.Visible = true;
this.button2.Visible = true;
this.textBox1.Visible = true;
this.dataGridView1.DataSource = null;
this.dataGridView1.Visible = false;
this.button3.Visible = false;
this.button4.Visible = false;
this.button5.Text = "管理";
}
}
}
}
using System;
using System.Management;
using System.Net.NetworkInformation;
using System.Text;
namespace 计算机配置信息采集上传
{
public class HardwareInfo
{
public static string GetCPUInfo()
{
StringBuilder sb = new StringBuilder();
sb.Append("[CPU信息]\r\n");
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
foreach (ManagementObject mo in searcher.Get())
{
sb.Append($"名称: {mo["Name"]}" + "\r\n");
sb.Append($"制造商: {mo["Manufacturer"]}" + "\r\n");
sb.Append($"核心数: {mo["NumberOfCores"]}");
sb.Append($"逻辑处理器数: {mo["NumberOfLogicalProcessors"]}" + "\r\n");
sb.Append($"当前时钟速度: {mo["CurrentClockSpeed"]} MHz" + "\r\n");
sb.Append($"最大时钟速度: {mo["MaxClockSpeed"]} MHz");
sb.Append($"L2缓存大小: {Convert.ToDouble(mo["L2CacheSize"]) / 1024} MB" + "\r\n");
sb.Append($"L3缓存大小: {Convert.ToDouble(mo["L3CacheSize"]) / 1024} MB" + "\r\n");
sb.Append($"序列号: {mo["ProcessorId"]}" + "\r\n");
}
}
catch (Exception ex)
{
sb.Append($"获取CPU信息失败: {ex.Message}" + "\r\n");
}
sb.Append("[end...]" + "\r\n");
return sb.ToString();
}
public static string GetMemoryInfo()
{
StringBuilder sb = new StringBuilder();
sb.Append("[内存信息]\r\n");
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory");
double totalMemoryGB = 0;
int index = 1;
foreach (ManagementObject mo in searcher.Get())
{
double capacityGB = Convert.ToDouble(mo["Capacity"]) / (1024 * 1024 * 1024);
totalMemoryGB += capacityGB;
sb.Append($"内存条 {index++}:" + "\r\n");
sb.Append($" 容量: {capacityGB:F2} GB" + "\r\n");
sb.Append($" 制造商: {mo["Manufacturer"]}" + "\r\n");
sb.Append($" 速度: {mo["Speed"]} MHz" + "\r\n");
sb.Append($" 序列号: {mo["SerialNumber"]}" + "\r\n");
}
sb.Append($"\n总物理内存: {totalMemoryGB:F2} GB" + "\r\n");
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
foreach (ManagementObject mo in searcher.Get())
{
double totalVisibleMemory = Convert.ToDouble(mo["TotalVisibleMemorySize"]) / 1024;
double freeMemory = Convert.ToDouble(mo["FreePhysicalMemory"]) / 1024;
sb.Append($"可用内存: {freeMemory:F2} GB / {totalVisibleMemory:F2} GB" + "\r\n");
}
}
catch (Exception ex)
{
sb.Append($"获取内存信息失败: {ex.Message}" + "\r\n");
}
sb.Append("[end...]" + "\r\n");
return sb.ToString();
}
public static string GetDiskInfo()
{
StringBuilder sb = new StringBuilder();
sb.Append("[磁盘信息]\r\n");
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject mo in searcher.Get())
{
double sizeGB = Convert.ToDouble(mo["Size"]) / (1024 * 1024 * 1024);
sb.Append($"型号: {mo["Model"]}" + "\r\n");
sb.Append($"接口类型: {mo["InterfaceType"]}" + "\r\n");
sb.Append($"序列号: {mo["SerialNumber"]?.ToString().Trim()}" + "\r\n");
sb.Append($"容量: {sizeGB:F2} GB" + "\r\n");
sb.Append($"分区数: {mo["Partitions"]}" + "\r\n");
}
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
foreach (ManagementObject mo in searcher.Get())
{
if (mo["Size"] != null)
{
double sizeGB = Convert.ToDouble(mo["Size"]) / (1024 * 1024 * 1024);
double freeGB = Convert.ToDouble(mo["FreeSpace"]) / (1024 * 1024 * 1024);
sb.Append($"驱动器: {mo["DeviceID"]}" + "\r\n");
sb.Append($" 文件系统: {mo["FileSystem"]}" + "\r\n");
sb.Append($" 总大小: {sizeGB:F2} GB" + "\r\n");
sb.Append($" 可用空间: {freeGB:F2} GB" + "\r\n");
}
}
}
catch (Exception ex)
{
sb.Append($"获取磁盘信息失败: {ex.Message}" + "\r\n");
}
sb.Append("[end...]" + "\r\n");
return sb.ToString();
}
public static string GetMotherboardInfo()
{
StringBuilder sb = new StringBuilder();
sb.Append("[主板信息]\r\n");
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
foreach (ManagementObject mo in searcher.Get())
{
sb.Append($"制造商: {mo["Manufacturer"]}" + "\r\n");
sb.Append($"型号: {mo["Product"]}" + "\r\n");
sb.Append($"序列号: {mo["SerialNumber"]}" + "\r\n");
sb.Append($"版本: {mo["Version"]}" + "\r\n");
}
}
catch (Exception ex)
{
sb.Append($"获取主板信息失败: {ex.Message}" + "\r\n");
}
sb.Append("[end...]" + "\r\n");
return sb.ToString();
}
public static string GetGPUInfo()
{
StringBuilder sb = new StringBuilder();
sb.Append("[显卡信息]\r\n");
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController");
foreach (ManagementObject mo in searcher.Get())
{
sb.Append($"名称: {mo["Name"]}" + "\r\n");
sb.Append($"制造商: {mo["AdapterCompatibility"]}" + "\r\n");
sb.Append($"显存: {Convert.ToDouble(mo["AdapterRAM"]) / (1024 * 1024 * 1024):F2} GB" + "\r\n");
sb.Append($"当前分辨率: {mo["CurrentHorizontalResolution"]}x{mo["CurrentVerticalResolution"]}" + "\r\n");
sb.Append($"驱动版本: {mo["DriverVersion"]}" + "\r\n");
}
}
catch (Exception ex)
{
sb.Append($"获取显卡信息失败: {ex.Message}" + "\r\n");
}
sb.Append("[end...]" + "\r\n");
return sb.ToString();
}
public static string GetNicInfo(out string mac)
{
mac = "123456789012";
StringBuilder sb = new StringBuilder();
sb.Append("[网卡信息]\r\n");
try
{
// 获取所有网络接口
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
// 检查接口是否运行中,并且不是环回接口
if (ni.OperationalStatus == OperationalStatus.Up && ni.NetworkInterfaceType != NetworkInterfaceType.Loopback && !ni.Description.Contains("Virtual"))
{
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
sb.Append("Interface Name: " + ni.Name + "\r\n");
mac = ni.GetPhysicalAddress().ToString();
sb.Append("MAC Addresss: " + ni.GetPhysicalAddress().ToString() + "\r\n");
sb.Append("IP Address: " + ip.Address.ToString() + "\r\n");
}
}
}
}
}
catch (Exception ex)
{
sb.Append($"获取网卡信息失败: {ex.Message}" + "\r\n");
}
sb.Append("[end...]" + "\r\n");
return sb.ToString();
}
}
}