[C#] Source code lấy thông tin phần cứng Hardware của máy tính
Xin chào các bạn, bài viết hôm nay mình xin chia sẽ đến các bạn source code C# lấy thông tin chi tiết của phần cứng (Hardware) của máy tính của mình, code phần mềm được chia sẽ bởi tác giả Alireza shirazi. Trong lập trình C#, các bạn muốn lấy các thông tin ...
Xin chào các bạn, bài viết hôm nay mình xin chia sẽ đến các bạn source code C# lấy thông tin chi tiết của phần cứng (Hardware) của máy tính của mình, code phần mềm được chia sẽ bởi tác giả Alireza shirazi.
Trong lập trình C#, các bạn muốn lấy các thông tin của các phần cứng máy tính như: CPU, RAM, HDD, SSD, Network, BIOS, Sound Card, Video Card, USB...
Thì trong C#, Microsoft đã cung cấp cho chúng ta thư viện qua class System.Management.
Các bạn phải import thư viện này vào project của mình nhé.
Trong thư viện này, nó cung cấp cho chúng ta một class object ManagementObjectSearcher.
Để lấy các thông tin cụ thể của từng phần cứng chúng ta sẽ sử dụng câu truy vấn query theo cú pháp như bên dưới đây, và chúng ta sẽ hiển thị thông tin đó ra ListView, hoặc sử dụng theo mục đích của mình.
Câu truy vấn của ManagementObjectSearcher C#:
ManagementObjectSearcher searcher = new ManagementObjectSearcher( "select * from " + Key);
Ở đây, chúng ta cần truyền vào tham số của Key để trả về thông tin của phần cứng đó.
Giao diện demo ứng dụng lấy thông tin Hardware C#:
Danh sách Hardware trên máy tínhDanh sách Key:
Win32_1394Controller Win32_1394ControllerDevice Win32_Account Win32_AccountSID Win32_ACE Win32_ActionCheck Win32_AllocatedResource Win32_ApplicationCommandLine Win32_ApplicationService Win32_AssociatedBattery Win32_AssociatedProcessorMemory Win32_BaseBoard Win32_BaseService Win32_Battery Win32_Binary Win32_BindImageAction Win32_BIOS Win32_BootConfiguration Win32_Bus Win32_CacheMemory Win32_CDROMDrive Win32_CheckCheck Win32_CIMLogicalDeviceCIMDataFile Win32_ClassicCOMApplicationClasses Win32_ClassicCOMClass Win32_ClassicCOMClassSetting Win32_ClassicCOMClassSettings Win32_ClassInfoAction Win32_ClientApplicationSetting Win32_CodecFile Win32_COMApplication Win32_COMApplicationClasses Win32_COMApplicationSettings Win32_COMClass Win32_ComClassAutoEmulator Win32_ComClassEmulator Win32_CommandLineAccess Win32_ComponentCategory Win32_ComputerSystem Win32_ComputerSystemProcessor Win32_ComputerSystemProduct Win32_COMSetting Win32_Condition Win32_CreateFolderAction Win32_CurrentProbe Win32_DCOMApplication Win32_DCOMApplicationAccessAllowedSetting Win32_DCOMApplicationLaunchAllowedSetting Win32_DCOMApplicationSetting Win32_DependentService Win32_Desktop Win32_DesktopMonitor Win32_DeviceBus Win32_DeviceMemoryAddress Win32_DeviceSettings Win32_Directory Win32_DirectorySpecification Win32_DiskDrive Win32_DiskDriveToDiskPartition Win32_DiskPartition Win32_DisplayConfiguration Win32_DisplayControllerConfiguration Win32_DMAChannel Win32_DriverVXD Win32_DuplicateFileAction Win32_Environment Win32_EnvironmentSpecification Win32_ExtensionInfoAction Win32_Fan Win32_FileSpecification Win32_FloppyController Win32_FloppyDrive Win32_FontInfoAction Win32_Group Win32_GroupUser Win32_HeatPipe Win32_IDEController Win32_IDEControllerDevice Win32_ImplementedCategory Win32_InfraredDevice Win32_IniFileSpecification Win32_InstalledSoftwareElement Win32_IRQResource Win32_Keyboard Win32_LaunchCondition Win32_LoadOrderGroup Win32_LoadOrderGroupServiceDependencies Win32_LoadOrderGroupServiceMembers Win32_LogicalDisk Win32_LogicalDiskRootDirectory Win32_LogicalDiskToPartition Win32_LogicalFileAccess Win32_LogicalFileAuditing Win32_LogicalFileGroup Win32_LogicalFileOwner Win32_LogicalFileSecuritySetting Win32_LogicalMemoryConfiguration Win32_LogicalProgramGroup Win32_LogicalProgramGroupDirectory Win32_LogicalProgramGroupItem Win32_LogicalProgramGroupItemDataFile Win32_LogicalShareAccess Win32_LogicalShareAuditing Win32_LogicalShareSecuritySetting Win32_ManagedSystemElementResource Win32_MemoryArray Win32_MemoryArrayLocation Win32_MemoryDevice Win32_MemoryDeviceArray Win32_MemoryDeviceLocation Win32_MethodParameterClass Win32_MIMEInfoAction Win32_MotherboardDevice Win32_MoveFileAction Win32_MSIResource Win32_NetworkAdapter Win32_NetworkAdapterConfiguration Win32_NetworkAdapterSetting Win32_NetworkClient Win32_NetworkConnection Win32_NetworkLoginProfile Win32_NetworkProtocol Win32_NTEventlogFile Win32_NTLogEvent Win32_NTLogEventComputer Win32_NTLogEventLog Win32_NTLogEventUser Win32_ODBCAttribute Win32_ODBCDataSourceAttribute Win32_ODBCDataSourceSpecification Win32_ODBCDriverAttribute Win32_ODBCDriverSoftwareElement Win32_ODBCDriverSpecification Win32_ODBCSourceAttribute Win32_ODBCTranslatorSpecification Win32_OnBoardDevice Win32_OperatingSystem Win32_OperatingSystemQFE Win32_OSRecoveryConfiguration Win32_PageFile Win32_PageFileElementSetting Win32_PageFileSetting Win32_PageFileUsage Win32_ParallelPort Win32_Patch Win32_PatchFile Win32_PatchPackage Win32_PCMCIAController Win32_Perf Win32_PerfRawData Win32_PerfRawData_ASP_ActiveServerPages Win32_PerfRawData_ASPNET_114322_ASPNETAppsv114322 Win32_PerfRawData_ASPNET_114322_ASPNETv114322 Win32_PerfRawData_ASPNET_ASPNET Win32_PerfRawData_ASPNET_ASPNETApplications Win32_PerfRawData_IAS_IASAccountingClients Win32_PerfRawData_IAS_IASAccountingServer Win32_PerfRawData_IAS_IASAuthenticationClients Win32_PerfRawData_IAS_IASAuthenticationServer Win32_PerfRawData_InetInfo_InternetInformationServicesGlobal Win32_PerfRawData_MSDTC_DistributedTransactionCoordinator Win32_PerfRawData_MSFTPSVC_FTPService Win32_PerfRawData_MSSQLSERVER_SQLServerAccessMethods Win32_PerfRawData_MSSQLSERVER_SQLServerBackupDevice Win32_PerfRawData_MSSQLSERVER_SQLServerBufferManager Win32_PerfRawData_MSSQLSERVER_SQLServerBufferPartition Win32_PerfRawData_MSSQLSERVER_SQLServerCacheManager Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases Win32_PerfRawData_MSSQLSERVER_SQLServerGeneralStatistics Win32_PerfRawData_MSSQLSERVER_SQLServerLatches Win32_PerfRawData_MSSQLSERVER_SQLServerLocks Win32_PerfRawData_MSSQLSERVER_SQLServerMemoryManager Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationAgents Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationDist Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationLogreader Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationMerge Win32_PerfRawData_MSSQLSERVER_SQLServerReplicationSnapshot Win32_PerfRawData_MSSQLSERVER_SQLServerSQLStatistics Win32_PerfRawData_MSSQLSERVER_SQLServerUserSettable Win32_PerfRawData_NETFramework_NETCLRExceptions Win32_PerfRawData_NETFramework_NETCLRInterop Win32_PerfRawData_NETFramework_NETCLRJit Win32_PerfRawData_NETFramework_NETCLRLoading Win32_PerfRawData_NETFramework_NETCLRLocksAndThreads Win32_PerfRawData_NETFramework_NETCLRMemory Win32_PerfRawData_NETFramework_NETCLRRemoting Win32_PerfRawData_NETFramework_NETCLRSecurity Win32_PerfRawData_Outlook_Outlook Win32_PerfRawData_PerfDisk_PhysicalDisk Win32_PerfRawData_PerfNet_Browser Win32_PerfRawData_PerfNet_Redirector Win32_PerfRawData_PerfNet_Server Win32_PerfRawData_PerfNet_ServerWorkQueues Win32_PerfRawData_PerfOS_Cache Win32_PerfRawData_PerfOS_Memory Win32_PerfRawData_PerfOS_Objects Win32_PerfRawData_PerfOS_PagingFile Win32_PerfRawData_PerfOS_Processor Win32_PerfRawData_PerfOS_System Win32_PerfRawData_PerfProc_FullImage_Costly Win32_PerfRawData_PerfProc_Image_Costly Win32_PerfRawData_PerfProc_JobObject Win32_PerfRawData_PerfProc_JobObjectDetails Win32_PerfRawData_PerfProc_Process Win32_PerfRawData_PerfProc_ProcessAddressSpace_Costly Win32_PerfRawData_PerfProc_Thread Win32_PerfRawData_PerfProc_ThreadDetails_Costly Win32_PerfRawData_RemoteAccess_RASPort Win32_PerfRawData_RemoteAccess_RASTotal Win32_PerfRawData_RSVP_ACSPerRSVPService Win32_PerfRawData_Spooler_PrintQueue Win32_PerfRawData_TapiSrv_Telephony Win32_PerfRawData_Tcpip_ICMP Win32_PerfRawData_Tcpip_IP Win32_PerfRawData_Tcpip_NBTConnection Win32_PerfRawData_Tcpip_NetworkInterface Win32_PerfRawData_Tcpip_TCP Win32_PerfRawData_Tcpip_UDP Win32_PerfRawData_W3SVC_WebService Win32_PhysicalMemory Win32_PhysicalMemoryArray Win32_PhysicalMemoryLocation Win32_PNPAllocatedResource Win32_PnPDevice Win32_PnPEntity Win32_PointingDevice Win32_PortableBattery Win32_PortConnector Win32_PortResource Win32_POTSModem Win32_POTSModemToSerialPort Win32_PowerManagementEvent Win32_Printer Win32_PrinterConfiguration Win32_PrinterController Win32_PrinterDriverDll Win32_PrinterSetting Win32_PrinterShare Win32_PrintJob Win32_PrivilegesStatus Win32_Process Win32_Processor Win32_ProcessStartup Win32_Product Win32_ProductCheck Win32_ProductResource Win32_ProductSoftwareFeatures Win32_ProgIDSpecification Win32_ProgramGroup Win32_ProgramGroupContents Win32_ProgramGroupOrItem Win32_Property Win32_ProtocolBinding Win32_PublishComponentAction Win32_QuickFixEngineering Win32_Refrigeration Win32_Registry Win32_RegistryAction Win32_RemoveFileAction Win32_RemoveIniAction Win32_ReserveCost Win32_ScheduledJob Win32_SCSIController Win32_SCSIControllerDevice Win32_SecurityDescriptor Win32_SecuritySetting Win32_SecuritySettingAccess Win32_SecuritySettingAuditing Win32_SecuritySettingGroup Win32_SecuritySettingOfLogicalFile Win32_SecuritySettingOfLogicalShare Win32_SecuritySettingOfObject Win32_SecuritySettingOwner Win32_SelfRegModuleAction Win32_SerialPort Win32_SerialPortConfiguration Win32_SerialPortSetting Win32_Service Win32_ServiceControl Win32_ServiceSpecification Win32_ServiceSpecificationService Win32_SettingCheck Win32_Share Win32_ShareToDirectory Win32_ShortcutAction Win32_ShortcutFile Win32_ShortcutSAP Win32_SID Win32_SMBIOSMemory Win32_SoftwareElement Win32_SoftwareElementAction Win32_SoftwareElementCheck Win32_SoftwareElementCondition Win32_SoftwareElementResource Win32_SoftwareFeature Win32_SoftwareFeatureAction Win32_SoftwareFeatureCheck Win32_SoftwareFeatureParent Win32_SoftwareFeatureSoftwareElements Win32_SoundDevice Win32_StartupCommand Win32_SubDirectory Win32_SystemAccount Win32_SystemBIOS Win32_SystemBootConfiguration Win32_SystemDesktop Win32_SystemDevices Win32_SystemDriver Win32_SystemDriverPNPEntity Win32_SystemEnclosure Win32_SystemLoadOrderGroups Win32_SystemLogicalMemoryConfiguration Win32_SystemMemoryResource Win32_SystemNetworkConnections Win32_SystemOperatingSystem Win32_SystemPartitions Win32_SystemProcesses Win32_SystemProgramGroups Win32_SystemResources Win32_SystemServices Win32_SystemSetting Win32_SystemSlot Win32_SystemSystemDriver Win32_SystemTimeZone Win32_SystemUsers Win32_TapeDrive Win32_TemperatureProbe Win32_Thread Win32_TimeZone Win32_Trustee Win32_TypeLibraryAction Win32_UninterruptiblePowerSupply Win32_USBController Win32_USBControllerDevice Win32_UserAccount Win32_UserDesktop Win32_VideoConfiguration Win32_VideoController Win32_VideoSettings Win32_VoltageProbe Win32_WMIElementSetting Win32_WMISetting
Để lấy thông tin ta cần sử dụng vòng hai vòng lặp for để duyệt và lấy thông tin của từng phần cứng như sau:
foreach (ManagementObject share in searcher.Get()) { // code ở đây } và foreach (PropertyData PC in share.Properties) { //code ở đây... }
Full source code get Hardware C#:
using System; using System.Collections; using System.Management; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace GetHardwareInfo { public partial class frmMain : Form { public frmMain() { InitializeComponent(); cmbxOption.SelectedItem = "Win32_Processor"; } private void InsertInfo(string Key, ref ListView lst, bool DontInsertNull) { lst.Items.Clear(); ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + Key); try { foreach (ManagementObject share in searcher.Get()) { ListViewGroup grp; try { grp = lst.Groups.Add(share["Name"].ToString(), share["Name"].ToString()); } catch { grp = lst.Groups.Add(share.ToString(), share.ToString()); } if (share.Properties.Count <= 0) { MessageBox.Show("No Information Available", "No Info", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } foreach (PropertyData PC in share.Properties) { ListViewItem item = new ListViewItem(grp); if (lst.Items.Count % 2 != 0) item.BackColor = Color.White; else item.BackColor = Color.WhiteSmoke; item.Text = PC.Name; if (PC.Value != null && PC.Value.ToString() != "") { switch (PC.Value.GetType().ToString()) { case "System.String[]": string[] str = (string[])PC.Value; string str2 = ""; foreach (string st in str) str2 += st + " "; item.SubItems.Add(str2); break; case "System.UInt16[]": ushort[] shortData = (ushort[])PC.Value; string tstr2 = ""; foreach (ushort st in shortData) tstr2 += st.ToString() + " "; item.SubItems.Add(tstr2); break; default: item.SubItems.Add(PC.Value.ToString()); break; } } else { if (!DontInsertNull) item.SubItems.Add("No Information available"); else continue; } lst.Items.Add(item); } } } catch (Exception exp) { MessageBox.Show("can't get data because of the followeing error " + exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void RemoveNullValue(ref ListView lst) { foreach (ListViewItem item in lst.Items) if (item.SubItems[1].Text == "No Information available") item.Remove(); } #region Control events ... private void cmbxNetwork_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxNetwork.SelectedItem.ToString(), ref lstNetwork, chkNetwork.Checked); } private void cmbxSystemInfo_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxSystemInfo.SelectedItem.ToString(), ref lstSystemInfo, chkSystemInfo.Checked); } private void cmbxUtility_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxUtility.SelectedItem.ToString(), ref lstUtility, chkUtility.Checked); } private void cmbxUserAccount_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxUserAccount.SelectedItem.ToString(), ref lstUserAccount, chkUserAccount.Checked); } private void cmbxStorage_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxStorage.SelectedItem.ToString(), ref lstStorage, chkDataStorage.Checked); } private void cmbxDeveloper_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxDeveloper.SelectedItem.ToString(), ref lstDeveloper, chkDeveloper.Checked); } private void cmbxMemory_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxMemory.SelectedItem.ToString(), ref lstMemory, chkMemory.Checked); } private void chkHardware_CheckedChanged(object sender, EventArgs e) { if (chkHardware.Checked) RemoveNullValue(ref lstDisplayHardware); else InsertInfo(cmbxOption.SelectedItem.ToString(), ref lstDisplayHardware, chkHardware.Checked); } private void cmbxOption_SelectedIndexChanged(object sender, EventArgs e) { InsertInfo(cmbxOption.SelectedItem.ToString(), ref lstDisplayHardware, chkHardware.Checked); } private void chkDataStorage_CheckedChanged(object sender, EventArgs e) { if (chkDataStorage.Checked) RemoveNullValue(ref lstStorage); else InsertInfo(cmbxStorage.SelectedItem.ToString(), ref lstStorage, chkDataStorage.Checked); } private void chkMemory_CheckedChanged(object sender, EventArgs e) { if (chkMemory.Checked) RemoveNullValue(ref lstMemory); else InsertInfo(cmbxMemory.SelectedItem.ToString(), ref lstStorage, false); } private void chkSystemInfo_CheckedChanged(object sender, EventArgs e) { if (chkSystemInfo.Checked) RemoveNullValue(ref lstSystemInfo); else InsertInfo(cmbxSystemInfo.SelectedItem.ToString(), ref lstSystemInfo, false); } private void chkNetwork_CheckedChanged(object sender, EventArgs e) { if (chkNetwork.Checked) RemoveNullValue(ref lstNetwork); else InsertInfo(cmbxNetwork.SelectedItem.ToString(), ref lstNetwork, false); } private void chkUserAccount_CheckedChanged(object sender, EventArgs e) { if (chkUserAccount.Checked) RemoveNullValue(ref lstUserAccount); else InsertInfo(cmbxUserAccount.SelectedItem.ToString(), ref lstUserAccount, false); } private void chkDeveloper_CheckedChanged(object sender, EventArgs e) { if (chkDeveloper.Checked) RemoveNullValue(ref lstDeveloper); else InsertInfo(cmbxDeveloper.SelectedItem.ToString(), ref lstDeveloper, false); } private void chkUtility_CheckedChanged(object sender, EventArgs e) { if (chkUtility.Checked) RemoveNullValue(ref lstUtility); else InsertInfo(cmbxUtility.SelectedItem.ToString(), ref lstUtility, false); } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { linkLabel1.LinkVisited = true; System.Diagnostics.Process.Start("http://www.ShiraziOnline.net"); } #endregion } }
Thanks for watching!
Tác giả: Alireza . Shirazi
DOWNLOAD SOURCE