RAM(物理メモリ)のシリアル番号を取得する方法を知る必要があります。C#を使用していて、ハードウェア情報を取得するためにWMIを使用しましたが、別のコンピューターではシリアル番号がnullを返します。どうすればそれを取得して任意のコンピューター(WMIではない)で動作できるのか知りたいのですが、他に方法がない場合は、C ++で記述して、この関数とアプリケーションを接続できますか?
これは私のコードの一部です。WqlObjectQueryMemory3_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();