備忘録

備忘録

C#でSSD/HDD等のシリアル番号を取得する方法

Ⅰ. はじめに

以下のコマンドを実行すると記憶媒体SSD/HDD等)のシリアル番号を取得する事ができます。

vol c:
ドイブ C のボリューム ラベルがありません。
ボリューム シリアル番号は A8D9-2235 です

このシリアル番号をC#のプログラムで取得する方法です。

Ⅱ. サンプルプログラム

using System.Management;

class Program
{
  static void Main(string[] args)
  {
    var volumes = new ManagementClass("Win32_LogicalDisk").GetInstances();

    foreach (var volume in volumes)
    {
      Console.WriteLine(volume.Properties["VolumeSerialNumber"].Value.ToString());
    }
  }
}

Ⅲ. 実行結果

f:id:kagasu:20171009015038p:plain

Ⅳ. その他

Q. シリアル番号は第三者と重複する?
A. かなり高い確率で重複します。
使用しているパソコンの固有番号、識別番号としての利用は不適切です。
また、シリアル番号は簡単に変更可能です。

しかし、DeviceIoControl を利用した方法(この記事のプログラムとは別の方法)で取得したシリアル番号は簡単には変更できず、私の知る限り重複しません。
http://forums.codeguru.com/showthread.php?545649-WinAPI-How-to-Get-Hard-Disk-Serial-Number