Wednesday, October 8, 2008

โค้ด C# ดึงค่าข้อมูล Hardisk

Get hardisk information with .Net (C#).

# โค้ด c# หรับดึงค่าต่างๆ ของ hardisk บนเครื่อง pc เช่น serial ของ hd

# ค่าจะมีอยู่ 2 แบบคือ

1. Get the firmware serial number (which never changes on reformatting)

2. Get the volume serial number - which changes with every format:


# แต่ ^^' เราสามารถหาโปรแกรมเปลี่ยนค่า serial ของ hardisk ได้เหมือนเปลี่ยน mac อ่ะ

# ส่วนโค้ดด้านล่างมาจาก codeproject.com จะเป็นแบบ firmware serial

# ซึ่งคิดว่าพวกโปรแกรม karaoke ใช้ค่านี้สำหรับสร้าง license key นะ ^^' ใช่ป่าวหว่า

References:

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Management;
using System.Collections;

public class ....
{
public static string GetInfoHD() // support xp, vista
{

ArrayList hdCollection = new ArrayList();
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");

foreach (ManagementObject wmi_HD in searcher.Get())
{
HardDrive hd = new HardDrive();
hd.Model = wmi_HD["Model"].ToString();
hd.Type = wmi_HD["InterfaceType"].ToString();
hdCollection.Add(hd);
}

searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");

int i = 0;
foreach (ManagementObject wmi_HD in searcher.Get())
{
// get the hard drive from collection
// using index
if (i + 1 > hdCollection.Count) break;
HardDrive hd = (HardDrive)hdCollection[i];

// get the hardware serial no.
if (wmi_HD["SerialNumber"] == null)
hd.SerialNo = "None";
else
hd.SerialNo = wmi_HD["SerialNumber"].ToString();

++i;
}

// Display available hard drives
foreach (HardDrive hd in hdCollection)
{
Console.WriteLine("Model\t\t: " + hd.Model);
Console.WriteLine("Type\t\t: " + hd.Type);
Console.WriteLine("Serial No.\t: " + hd.SerialNo);
Console.WriteLine();
}

return "";
}

class HardDrive
{
private string model = null;
private string type = null;
private string serialNo = null;
public string Model
{
get { return model; }
set { model = value; }
}
public string Type
{
get { return type; }
set { type = value; }
}
public string SerialNo
{
get { return serialNo; }
set { serialNo = value; }
}
}
}

No comments:

Post a Comment