C#を使用して、ローカルマシンに存在するハードドライブに関する情報をどのように抽出できますか

StackOverflow https://stackoverflow.com/questions/232979

  •  04-07-2019
  •  | 
  •  

質問

サイズ/容量、シリアル番号、モデル番号、Heads Sectors、Manufacturer、および場合によってはSMARTデータなどのデータを取得しようとしています。

役に立ちましたか?

解決

WMI呼び出しを使用して、ハードディスクに関する情報にアクセスできます。

// System.Managementを使用する必要があります。 & System.Management.dllリファレンス

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\""); 
disk.Get(); 
Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes"); 
Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + "bytes");

他のヒント

System.Management 名前空間を使用する必要があります。

System.Management.ManagementObjectSearcher ms =
    new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject mo in ms.Get())
{
    System.Console.Write(mo["Model");
}

Win32_DiskDriveクラスのメンバーの詳細については、次をご覧ください。

http://msdn.microsoft.com/ en-us / library / aa394132(VS.85).aspx

最も簡単な方法は、WMIを使用して必要な情報を取得することです。 Win32___DiskDrive のドキュメントをご覧ください。 MSDN。さまざまな標準ドライブプロパティが含まれています。また、MSStorageDriver_ATAPISmartData WMIクラスの使用を試すこともできます。現時点ではドキュメントを見つけることができませんが、探しているSMARTデータをすべて持っている必要があります。すべてのドライブを列挙してそのプロパティを取得するための基本的なサンプルコードを次に示します。

ManagementClass driveClass = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection drives = driveClass.GetInstances();
foreach (ManagementObject drive in drives) 
{ 
    foreach (PropertyData property in drive.Properties)
    {
        Console.WriteLine("Property: {0}, Value: {1}", property.Name, property.Value);        
    }
    Console.WriteLine();
}

WMI を使用して、必要な情報のほとんどを取得できます。 WMIの紹介こちら

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top