c# – 获取已安装的RAM类型
发布时间:2020-12-15 21:52:41 所属栏目:百科 来源:网络整理
导读:我试图获得PC上安装的RAM类型.我能够找到一个代码示例,但它并没有真正起作用,它告诉我DDR2总是未知. 对于DDR3,它也总是返回0.对于SDRAM来说这个字很好 编辑:不应该认为它可以在XP上运行. public string RAM_Type() { int type=0; var searcher = new Manage
我试图获得PC上安装的RAM类型.我能够找到一个代码示例,但它并没有真正起作用,它告诉我DDR2总是未知.
对于DDR3,它也总是返回0.对于SDRAM来说这个字很好 编辑:不应该认为它可以在XP上运行. public string RAM_Type() { int type=0; var searcher = new ManagementObjectSearcher("Select * from Win32_PhysicalMemory"); foreach (ManagementObject obj in searcher.Get()) { type = Int32.Parse(obj.GetPropertyValue("MemoryType").ToString()); } switch (type) { case 20: return "DDR"; break; case 21: return "DDR-2"; break; case 17: return "SDRAM"; break; default: if (type == 0 || type > 22) return "DDR-3"; else return "Unknown"; } } 解决方法
.NET没有提供一种获取我所知道的内存类型的方法.
.Net中的现有方法仅返回等效值,但必须按照本指南手动完成到字符串的转换:Win32_PhysicalMemory class 我已经为此目的创建了一个专门的类,我将代码翻译成各自的名称 using System; using System.Management; namespace Hector { public class RamInfo { public static string RamType { get { int type = 0; ConnectionOptions connection = new ConnectionOptions(); connection.Impersonation = ImpersonationLevel.Impersonate; ManagementScope scope = new ManagementScope("\.rootCIMV2",connection); scope.Connect(); ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_PhysicalMemory"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope,query); foreach (ManagementObject queryObj in searcher.Get()) { type = Convert.ToInt32(queryObj["MemoryType"]); } return TypeString(type); } } private static string TypeString(int type) { string outValue = string.Empty; switch (type) { case 0x0: outValue = "Unknown"; break; case 0x1: outValue = "Other"; break; case 0x2: outValue = "DRAM"; break; case 0x3: outValue = "Synchronous DRAM"; break; case 0x4: outValue = "Cache DRAM"; break; case 0x5: outValue = "EDO"; break; case 0x6: outValue = "EDRAM"; break; case 0x7: outValue = "VRAM"; break; case 0x8: outValue = "SRAM"; break; case 0x9: outValue = "RAM"; break; case 0xa: outValue = "ROM"; break; case 0xb: outValue = "Flash"; break; case 0xc: outValue = "EEPROM"; break; case 0xd: outValue = "FEPROM"; break; case 0xe: outValue = "EPROM"; break; case 0xf: outValue = "CDRAM"; break; case 0x10: outValue = "3DRAM"; break; case 0x11: outValue = "SDRAM"; break; case 0x12: outValue = "SGRAM"; break; case 0x13: outValue = "RDRAM"; break; case 0x14: outValue = "DDR"; break; case 0x15: outValue = "DDR2"; break; case 0x16: outValue = "DDR2 FB-DIMM"; break; case 0x17: outValue = "Undefined 23"; break; case 0x18: outValue = "DDR3"; break; case 0x19: outValue = "FBD2"; break; case 0x1a: outValue = "DDR4"; break; default: outValue = "Undefined"; break; } return outValue; } } } private void Form1_Load(object sender,EventArgs e) { label1.Text = Hector.RamInfo.RamType; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |