【问题标题】:How can i get ram serial number?我怎样才能获得ram序列号?
【发布时间】:2016-08-24 22:00:04
【问题描述】:

我需要知道如何获得 RAM(物理内存)序列号。我正在使用 C# 并使用 WMI 获取硬件信息,但序列号在另一台计算机上返回 null。我想知道如何获取它并在任何计算机(不是 WMI)上工作,如果没有其他方法可以用 C++ 编写它并在此函数和我的应用程序之间建立连接?

这是我的一些代码: WqlObjectQuery Memory3_objectQuery = new WqlObjectQuery("Select * from Win32_PhysicalMemory"); ManagementObjectSearcher Memory3_Searcher = new ManagementObjectSearcher(Memory3_objectQuery); foreach(Memory3_Searcher.Get() 中的 ManagementObject MO2) {

cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@Component_Type", "RAM");      


try
{
    Model = MO2["Model"].ToString();
    if (Model != null)
    {
        cmd.Parameters.AddWithValue("@Model", Model);
    }
    else { }
}
catch (NullReferenceException) { }

try
{
    Capacity = MO2["Capacity"].ToString();
    if (Capacity != null)
    {
        cmd.Parameters.AddWithValue("@Capacity", Capacity);
    }
    else { }
}
catch (NullReferenceException)
{ }
try
{
    Serial = MO2["SerialNumber"].ToString();
    if (Serial != null)
    {
        cmd.Parameters.AddWithValue("@SerialNumber", Serial);
    }
    else { }
}
catch (NullReferenceException)
{
}
try
{
    Manufacturer = MO2["Manufacturer"].ToString();
    if (Manufacturer != null)
    {
        cmd.Parameters.AddWithValue("@Manufacturer", Manufacturer);
    }
    else { }
}

catch (NullReferenceException)
{
}


// Console.WriteLine("Serial Number Bank" + count + ": " + s);
try
{
    s = MO2["MemoryType"].ToString();
    if (s.Equals("21"))
    {
        s = "DDr2";
        cmd.Parameters.AddWithValue("@Memory_Type", s);
    }
    else if (s.Equals("20"))
    {
        s = "DDr";
        cmd.Parameters.AddWithValue("@Memory_Type", s);
    }
    else if (s.Equals("17"))
    {
        s = "SDRAM";
        cmd.Parameters.AddWithValue("@Memory_Type", s);
    }
}
catch (NullReferenceException) { }
cmd.Parameters.AddWithValue("@Computer_Name", myHost);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();

【问题讨论】:

  • 这高度依赖于主板制造商。除非在(某些)服务器主板上,否则您不会得到这个。
  • 要获取所有硬件信息,请访问以下链接,特殊链接:codescratcher.com/windows-forms/…

标签: c#-3.0


【解决方案1】:
//SEE http://licensetoolkit.com/blog/hardware-identification-using-ram/
//using System.Management;
public static void OutputRamInformation()
{
    // Create our WMI searcher to do our query
    ManagementObjectSearcher searcher = new
           ManagementObjectSearcher( "select * from Win32_PhysicalMemory" );
    // Now loop through all the item found with the query
    int ram = 1;
    foreach ( ManagementObject obj in searcher.Get() )
    {
        Console.WriteLine( String.Format( "RAM #{0}:" , ram ) );
        // Now step through each of the properties and output their values
        foreach ( PropertyData property in obj.Properties )
        {
            if ( property.Value != null )
            {
                Console.WriteLine( property.Name + " = " +
                     property.Value.ToString() );
            }
        }
        Console.WriteLine( "---------------------------------" );
        // Increment our ram chip count
        ram++;
    }
    // Wait for a keypress before continuting
    Console.WriteLine( "Press any key to continue..." );
    Console.ReadKey();
}

【讨论】:

    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2023-03-21
    相关资源
    最近更新 更多