C# 獲取計算機信息(操作系統信息、系統信息、主板、處理器、硬盤、內存、顯卡)


一、計算機操作系統信息

    (1)獲取操作系統版本描述

 /// <summary>
 /// 操作系統版本
 /// </summary>
 public static string OSDescription { get; } = System.Runtime.InteropServices.RuntimeInformation.OSDescription;
View Code

    (2)獲取操作系統架構

        /// <summary>
        /// 操作系統架構(<see cref="Architecture">/// </summary>
        public static string OSArchitecture { get; } = System.Runtime.InteropServices.RuntimeInformation.OSArchitecture.ToString();
View Code

    (3)判斷操作系統是否為指定的操作系統

        /// <summary>
        /// 是否為Windows操作系統
        /// </summary>
        public static bool IsOSPlatform { get; } = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows);
View Code

二、計算機基本系統信息

        通過 VMI中的 ManagementClass 類輸入路徑 “Win32_ComputerSystemProduct”,可獲取電腦型號、UUID等基本信息,全部如下:

       /// <summary>
        /// 電腦型號
        // Caption:計算機系統產品
        // Description:計算機系統產品
        // ElementName:
        // IdentifyingNumber:CND0162XZ1
        // InstanceID:
        // Name:HP ENVY x360 Convertible 15-ed0xxx
        // SKUNumber:
        // UUID:A6C31C0E-997C-EA11-8104-B05CDA905B6C
        // Vendor:HP
        // Version:Type1ProductConfigId
        // WarrantyDuration:
        // WarrantyStartDate:
        /// </summary>
        /// <returns></returns>
        public static string GetComputerVersion()
        {
            var version = new StringBuilder();
            var moc = new ManagementClass("Win32_ComputerSystemProduct").GetInstances();
            foreach (ManagementObject mo in moc)
            {
                foreach (var item in mo.Properties)
                {
                    version.Append($"{item.Name}:{item.Value}\r\n");
                }
            }
            return version.ToString(); ;
        }
View Code

三、計算機主板信息

        通過 VMI中的 ManagementClass 類輸入路徑 “Win32_BaseBoard”,可獲取主板型號、主板標識等基本信息,全部如下:

        /// <summary>
        /// 主板信息
        // Caption:簡短說明
        // ConfigOptions:數組,表示位於在底板上跳線和開關的配置
        // CreationClassName:表示類的名稱(就是Win32_baseboard類)
        // Depth:對象的描述(底板)
        // Description:基板
        // Height:
        // HostingBoard:如果為TRUE,該卡是一個主板,或在一個機箱中的基板。
        // HotSwappable:如果為TRUE,就是支持熱插拔(判斷是否支持熱插拔)
        // InstallDate:
        // Manufacturer:表示制造商的名稱
        // Model:
        // Name:對象的名稱標簽
        // OtherIdentifyingInfo:
        // PartNumber:
        // PoweredOn:如果為真,物理元素處於開機狀態
        // Product:產品的型號
        // Removable:判斷是否可拆卸的
        // Replaceable:判斷是否可更換的
        // RequirementsDescription:
        // RequiresDaughterBoard:False
        // SerialNumber:制造商分配的用於識別所述物理元件數目
        // SKU:
        // SlotLayout:
        // SpecialRequirements:
        // Status:對象的當前狀態
        // Tag:符系統的基板唯一標識
        // Version:08.32
        // Weight:
        // Width:
        /// </summary>
        /// <returns></returns>
        public static string GetBaseBoardInfo()
        {
            var baseBoard = new StringBuilder();
            var moc = new ManagementClass("Win32_BaseBoard").GetInstances();
            foreach (ManagementObject mo in moc)
            {
                foreach (var item in mo.Properties)
                {
                    baseBoard.Append($"{item.Name}:{item.Value}\r\n");
                }
            }
            return baseBoard.ToString();
        }
View Code

四、計算機處理器信息

        通過 VMI中的 ManagementClass 類輸入路徑 “Win32_Processor”,可獲取CPU個數、最高主頻、當前主頻等基本信息,全部如下:

        /// <summary>
        /// 處理器信息(<see cref="https://www.cnblogs.com/zhesong/p/wmiid.html">
        //  AddressWidth:在32位操作系統,該值是32,在64位操作系統是64
        //  Architecture:所使用的平台的處理器架構
        //  AssetTag:代表該處理器的資產標簽
        //  Availability:設備的狀態
        //  Caption:設備的簡短描述
        //  Characteristics:處理器支持定義的功能
        //  ConfigManagerErrorCode:Windows API的配置管理器錯誤代碼
        //  ConfigManagerUserConfig:如果為TRUE,該裝置是使用用戶定義的配置
        //  CpuStatus:處理器的當前狀態
        //  CreationClassName:出現在用來創建一個實例繼承鏈的第一個具體類的名稱
        //  CurrentClockSpeed:處理器的當前速度,以MHz為單位
        //  CurrentVoltage:處理器的電壓。如果第八位被設置,位0-6包含電壓乘以10,如果第八位沒有置位,則位在VoltageCaps設定表示的電壓值。 CurrentVoltage時SMBIOS指定的電壓值只設置
        //  DataWidth:在32位處理器,該值是32,在64位處理器是64
        //  Description:描述
        //  DeviceID:在系統上的處理器的唯一標識符
        //  ErrorCleared:如果為真,報上一個錯誤代碼的被清除
        //  ErrorDescription:錯誤的代碼描述
        //  ExtClock:外部時鍾頻率,以MHz為單位
        //  Family:處理器系列類型
        //  InstallDate:安裝日期
        //  L2CacheSize:二級緩存大小
        //  L2CacheSpeed:二級緩存處理器的時鍾速度
        //  L3CacheSize:三級緩存大小
        //  L3CacheSpeed:三級緩存處理器的時鍾速度
        //  LastErrorCode:報告的邏輯設備上一個錯誤代碼
        //  Level:處理器類型的定義。該值取決於處理器的體系結構
        //  LoadPercentage:每個處理器的負載能力,平均到最后一秒
        //  Manufacturer:處理器的制造商
        //  MaxClockSpeed:處理器的最大速度,以MHz為單位
        //  Name:處理器的名稱
        //  NumberOfCores:處理器的當前實例的數目。核心是在集成電路上的物理處理器
        //  NumberOfEnabledCore:每個處理器插槽啟用的內核數
        //  NumberOfLogicalProcessors:用於處理器的當前實例邏輯處理器的數量
        //  OtherFamilyDescription:處理器系列類型
        //  PartNumber:這款處理器的產品編號制造商所設置
        //  PNPDeviceID:即插即用邏輯設備的播放設備標識符
        //  PowerManagementCapabilities:邏輯設備的特定功率相關的能力陣列
        //  PowerManagementSupported:如果為TRUE,該裝置的功率可以被管理,這意味着它可以被放入掛起模式
        //  ProcessorId:描述處理器功能的處理器的信息
        //  ProcessorType:處理器的主要功能
        //  Revision:系統修訂級別取決於體系結構
        //  Role:所述處理器的作用
        //  SecondLevelAddressTranslationExtensions:如果為True,該處理器支持用於虛擬地址轉換擴展
        //  SerialNumber:處理器的序列號
        //  SocketDesignation:芯片插座的線路上使用的類型
        //  Status:對象的當前狀態
        //  StatusInfo:對象的當前狀態信息
        //  Stepping:在處理器家族處理器的版本
        //  SystemCreationClassName:創建類名屬性的作用域計算機的價值
        //  SystemName:系統的名稱
        //  ThreadCount:每個處理器插槽的線程數
        //  UniqueId:全局唯一標識符的處理器
        //  UpgradeMethod:CPU插槽的信息
        //  Version:依賴於架構處理器的版本號
        //  VirtualizationFirmwareEnabled:如果真,固件可以虛擬化擴展
        //  VMMonitorModeExtensions:如果為True,該處理器支持Intel或AMD虛擬機監控器擴展。
        //  VoltageCaps:該處理器的電壓的能力
        /// </summary>
        /// <returns></returns>
        public static string GetCPUInfo()
        {
            var cpu = new StringBuilder();
            var moc = new ManagementClass("Win32_Processor").GetInstances();
            foreach (var mo in moc)
            {
                foreach (var item in mo.Properties)
                {
                    cpu.Append($"{item.Name}:{item.Value}\r\n");
                }
            }
            return cpu.ToString();
        }
View Code

五、計算機內存信息

        通過 VMI中的 ManagementClass 類輸入路徑 “Win32_PhysicalMemory”,可獲取內存總大小等基本信息,輸入路徑 “Win32_PerfRawData_PerfOS_Memory”,可獲取可利用內存大小等基本信息,全部如下:

        /// <summary>
        /// 內存信息(<see cref="https://www.cnblogs.com/zhesong/p/wmiid.html">
        //  Attributes:1
        //  BankLabel:BANK 2
        //  Capacity:獲取內存容量(單位KB)
        //  Caption:物理內存還虛擬內存
        //  ConfiguredClockSpeed:配置時鍾速度
        //  ConfiguredVoltage:配置電壓
        //  CreationClassName:創建類名
        //  DataWidth:獲取內存帶寬
        //  Description:描述
        //  DeviceLocator:獲取設備定位器
        //  FormFactor:構成因素
        //  HotSwappable:是否支持熱插拔
        //  InstallDate:安裝日期
        //  InterleaveDataDepth:數據交錯深度
        //  InterleavePosition:數據交錯的位置
        //  Manufacturer:生產商
        //  MaxVoltage:最大電壓
        //  MemoryType:內存類型
        //  MinVoltage:最小電壓
        //  Model:型號
        //  Name:名字
        //  OtherIdentifyingInfo:其他識別信息
        //  PartNumber:零件編號
        //  PositionInRow:行位置
        //  PoweredOn:是否接通電源
        //  Removable:是否可拆卸
        //  Replaceable:是否可更換
        //  SerialNumber:編號
        //  SKU:SKU號
        //  SMBIOSMemoryType:SMBIOS內存類型
        //  Speed:速率
        //  Status:狀態
        //  Tag:唯一標識符的物理存儲器
        //  TotalWidth:總寬
        //  TypeDetail:類型詳細信息
        //  Version:版本信息
        //  AvailableBytes:可利用內存大小(B)
        //  AvailableKBytes:可利用內存大小(KB)
        //  AvailableMBytes:可利用內存大小(MB)
        //  CacheBytes:125460480
        //  CacheBytesPeak:392294400
        //  CacheFaultsPersec:70774721
        //  Caption:
        //  CommitLimit:31939616768
        //  CommittedBytes:20280020992
        //  DemandZeroFaultsPersec:759274721
        //  Description:
        //  FreeAndZeroPageListBytes:2097152
        //  FreeSystemPageTableEntries:12528527
        //  Frequency_Object:0
        //  Frequency_PerfTime:10000000
        //  Frequency_Sys100NS:10000000
        //  LongTermAverageStandbyCacheLifetimes:14400
        //  ModifiedPageListBytes:41500672
        //  Name:
        //  PageFaultsPersec:1560432075
        //  PageReadsPersec:19173703
        //  PagesInputPersec:98834167
        //  PagesOutputPersec:25921396
        //  PagesPersec:124755563
        //  PageWritesPersec:103362
        //  PercentCommittedBytesInUse:2727084283
        //  PercentCommittedBytesInUse_Base:4294967295
        //  PoolNonpagedAllocs:0
        //  PoolNonpagedBytes:798519296
        //  PoolPagedAllocs:0
        //  PoolPagedBytes:709898240
        //  PoolPagedResidentBytes:496873472
        //  StandbyCacheCoreBytes:247545856
        //  StandbyCacheNormalPriorityBytes:847036416
        //  StandbyCacheReserveBytes:0
        //  SystemCacheResidentBytes:125460480
        //  SystemCodeResidentBytes:0
        //  SystemCodeTotalBytes:0
        //  SystemDriverResidentBytes:17592179236864
        //  SystemDriverTotalBytes:16953344
        //  Timestamp_Object:0
        //  Timestamp_PerfTime:5838028983825
        //  Timestamp_Sys100NS:132532052633540000
        //  TransitionFaultsPersec:792343233
        //  TransitionPagesRePurposedPersec:78554340
        //  WriteCopiesPersec:17253788
        /// </summary>
        /// <returns></returns>
        public static string GetRAMInfo()
        {
            var ram = new StringBuilder();
            var searcher = new ManagementObjectSearcher()
            {
                Query = new SelectQuery("Win32_PhysicalMemory"),
            }.Get().GetEnumerator();

            while (searcher.MoveNext())
            {
                ManagementBaseObject baseObj = searcher.Current;
                foreach (var item in baseObj.Properties)
                {
                    ram.Append($"{item.Name}:{item.Value}\r\n");
                }
            }

            searcher = new ManagementObjectSearcher()
            {
                Query = new SelectQuery("Win32_PerfRawData_PerfOS_Memory"),
            }.Get().GetEnumerator();

            while (searcher.MoveNext())
            {
                ManagementBaseObject baseObj = searcher.Current;
                foreach (var item in baseObj.Properties)
                {
                    ram.Append($"{item.Name}:{item.Value}\r\n");
                }
            }
            return ram.ToString();
        }
View Code

六、計算機顯卡信息

        通過 VMI中的 ManagementClass 類輸入路徑 “Win32_VideoController”,可獲取顯卡類型、屏幕分辨率等基本信息,全部如下:

        /// <summary>
        /// 顯卡信息
        //  AcceleratorCapabilities:
        //  AdapterCompatibility:Intel Corporation
        //  AdapterDACType:Internal
        //  AdapterRAM:1073741824
        //  Availability:3
        //  CapabilityDescriptions:
        //  Caption:Intel(R) UHD Graphics
        //  ColorTableEntries:
        //  ConfigManagerErrorCode:0
        //  ConfigManagerUserConfig:False
        //  CreationClassName:Win32_VideoController
        //  CurrentBitsPerPixel:32
        //  CurrentHorizontalResolution:1920
        //  CurrentNumberOfColors:4294967296
        //  CurrentNumberOfColumns:0
        //  CurrentNumberOfRows:0
        //  CurrentRefreshRate:60
        //  CurrentScanMode:4
        //  CurrentVerticalResolution:1080
        //  Description:Intel(R) UHD Graphics
        //  DeviceID:VideoController1
        //  DeviceSpecificPens:
        //  DitherType:0
        //  DriverDate:20200109000000.000000-000
        //  DriverVersion:26.20.100.7755
        //  ErrorCleared:
        //  ErrorDescription:
        //  ICMIntent:
        //  ICMMethod:
        //  InfFilename:oem41.inf
        //  InfSection:iCML_w10_DS
        //  InstallDate:
        //  InstalledDisplayDrivers:C:\windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_d512f7a0dbcb7a2f\igdumdim64.dll,C:\windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_d512f7a0dbcb7a2f\igd10iumd64.dll,C:\windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_d512f7a0dbcb7a2f\igd10iumd64.dll,C:\windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_d512f7a0dbcb7a2f\igd12umd64.dll
        //  LastErrorCode:
        //  MaxMemorySupported:
        //  MaxNumberControlled:
        //  MaxRefreshRate:75
        //  MinRefreshRate:50
        //  Monochrome:False
        //  Name:Intel(R) UHD Graphics
        //  NumberOfColorPlanes:
        //  NumberOfVideoPages:
        //  PNPDeviceID:PCI\VEN_8086&DEV_9B41&SUBSYS_8757103C&REV_02\3&11583659&2&10
        //  PowerManagementCapabilities:
        //  PowerManagementSupported:
        //  ProtocolSupported:
        //  ReservedSystemPaletteEntries:
        //  SpecificationVersion:
        //  Status:OK
        //  StatusInfo:
        //  SystemCreationClassName:Win32_ComputerSystem
        //  SystemName:DESKTOP-OLA70V5
        //  SystemPaletteEntries:
        //  TimeOfLastReset:
        //  VideoArchitecture:5
        //  VideoMemoryType:2
        //  VideoMode:
        //  VideoModeDescription:屏幕描述
        //  VideoProcessor:Intel(R) UHD Graphics Family
        //  AcceleratorCapabilities:
        //  AdapterCompatibility:NVIDIA
        //  AdapterDACType:Integrated RAMDAC
        //  AdapterRAM:4293918720
        //  Availability:8
        //  CapabilityDescriptions:
        //  Caption:顯卡描述
        //  ColorTableEntries:
        //  ConfigManagerErrorCode:0
        //  ConfigManagerUserConfig:False
        //  CreationClassName:Win32_VideoController
        //  CurrentBitsPerPixel:
        //  CurrentHorizontalResolution:
        //  CurrentNumberOfColors:
        //  CurrentNumberOfColumns:
        //  CurrentNumberOfRows:
        //  CurrentRefreshRate:
        //  CurrentScanMode:
        //  CurrentVerticalResolution:
        //  Description:NVIDIA GeForce MX330
        //  DeviceID:VideoController2
        //  DeviceSpecificPens:
        //  DitherType:
        //  DriverDate:20200923000000.000000-000
        //  DriverVersion:27.21.14.5241
        //  ErrorCleared:
        //  ErrorDescription:
        //  ICMIntent:
        //  ICMMethod:
        //  InfFilename:oem123.inf
        //  InfSection:Section043
        //  InstallDate:
        //  InstalledDisplayDrivers:C:\windows\System32\DriverStore\FileRepository\nvhm.inf_amd64_c87780efe1918cc5\nvldumdx.dll,C:\windows\System32\DriverStore\FileRepository\nvhm.inf_amd64_c87780efe1918cc5\nvldumdx.dll,C:\windows\System32\DriverStore\FileRepository\nvhm.inf_amd64_c87780efe1918cc5\nvldumdx.dll,C:\windows\System32\DriverStore\FileRepository\nvhm.inf_amd64_c87780efe1918cc5\nvldumdx.dll
        //  LastErrorCode:
        //  MaxMemorySupported:
        //  MaxNumberControlled:
        //  MaxRefreshRate:
        //  MinRefreshRate:
        //  Monochrome:False
        //  Name:NVIDIA GeForce MX330
        //  NumberOfColorPlanes:
        //  NumberOfVideoPages:
        //  PNPDeviceID:PCI\VEN_10DE&DEV_1D16&SUBSYS_8757103C&REV_A1\4&24375CB2&0&00E0
        //  PowerManagementCapabilities:
        //  PowerManagementSupported:
        //  ProtocolSupported:
        //  ReservedSystemPaletteEntries:
        //  SpecificationVersion:
        //  Status:OK
        //  StatusInfo:
        //  SystemCreationClassName:Win32_ComputerSystem
        //  SystemName:DESKTOP-OLA70V5
        //  SystemPaletteEntries:
        //  TimeOfLastReset:
        //  VideoArchitecture:5
        //  VideoMemoryType:2
        //  VideoMode:
        //  VideoModeDescription:
        //  VideoProcessor:GeForce MX330
        /// </summary>
        /// <returns></returns>
        public static string GetGPUInfo()
        {
            var gpu = new StringBuilder();
            var moc = new ManagementObjectSearcher("select * from Win32_VideoController").Get();

            foreach (var mo in moc)
            {
                foreach (var item in mo.Properties)
                {
                    gpu.Append($"{item.Name}:{item.Value}\r\n");
                }
            }
            return gpu.ToString(); ;
        }
View Code

七、計算機硬盤信息

        通過 VMI中的 ManagementClass 類輸入路徑 “Win32_LogicalDisk”,可獲取硬盤分區名稱、各分區總容量、可利用容量,全部如下:

        /// <summary>
        /// 硬盤驅動器信息(<see cref="https://www.cnblogs.com/zhesong/p/wmiid.html">
        //  Access:0
        //  Availability:
        //  BlockSize:
        //  Caption:硬盤描述,例如“C:”
        //  Compressed:False
        //  ConfigManagerErrorCode:Windows配置管理器錯誤代碼
        //  ConfigManagerUserConfig:如果為True,該設備使用用戶定義的配置
        //  CreationClassName:Win32_LogicalDisk
        //  Description:本地固定磁盤
        //  DeviceID:磁盤驅動器與系統中的其他設備的唯一標識符,例如“C:”
        //  DriveType:3
        //  ErrorCleared:如果為True,報告LastErrorCode錯誤現已清除
        //  ErrorDescription:關於可能采取的糾正措施記錄在LastErrorCode錯誤,和信息的詳細信息
        //  ErrorMethodology:誤差檢測和校正的類型被此設備支持
        //  FileSystem:NTFS
        //  FreeSpace:可使用硬盤大小
        //  InstallDate:
        //  LastErrorCode:
        //  MaximumComponentLength:255
        //  MediaType:由該設備使用或訪問的媒體類型
        //  Name:硬盤名字
        //  NumberOfBlocks:
        //  PNPDeviceID:即插即用邏輯設備的播放設備標識符
        //  PowerManagementCapabilities:
        //  PowerManagementSupported:
        //  ProviderName:
        //  Purpose:
        //  QuotasDisabled:True
        //  QuotasIncomplete:False
        //  QuotasRebuilding:False
        //  Size:硬盤總大小
        //  Status:對象的當前狀態
        //  StatusInfo:邏輯設備的狀態
        //  SupportsDiskQuotas:True
        //  SupportsFileBasedCompression:True
        //  SystemCreationClassName:Win32_ComputerSystem
        //  SystemName:DESKTOP-OLA70V5
        //  VolumeDirty:False
        //  VolumeName:Windows
        //  VolumeSerialNumber:硬盤的序列號
        /// </summary>
        /// <returns></returns>
        public static string GetDiskInfo()
        {
            var disk = new StringBuilder();
            var moc = new ManagementClass("Win32_LogicalDisk").GetInstances();
            foreach (ManagementObject mo in moc)
            {
                foreach (var item in mo.Properties)
                {
                    disk.Append($"{item.Name}:{item.Value}\r\n");
                }
            }
            return disk.ToString();
        }
View Code

        github地址:https://github.com/Dwayne112401/ComputerInfo.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM