• λ我爱Aspx >> Asp.Net >> 如何得到硬盘序列号.net [C#]
  • 如何得到硬盘序列号.net [C#]

  • :未知  Դ:internet  :2007-5-20 16:42:07  ؼ:c#,.net
  • 硬盘序列号(Serial Number)不等于卷标号(Volume Name),后者虽然很容易得到,但是格式化分区后就会重写,不可靠。遗憾的是很多朋友往往分不清这一点。

    要得到硬盘的物理序列号,可以通过WMI,也就是Win32_PhysicalMedia.SerialNumber。可惜的是Windows 98/ME的WMI并不支持这个类,访问时会出现异常。

    受陆麟的例子的启发,我们还可以通过S.M.A.R.T.接口,直接从RING3调用API DeviceIoControl()来获取硬盘信息,而不需要写VXD或者DRIVER。这样这个问题就解决了,我对它进行了封装,大量使用了P/Invoke技术,一个完整的Library。支持Windows 98-2003。

    使用上很简单:

    HardDiskInfo hdd = AtapiDevice.GetHddInfo(0); // 第一个硬盘

    Console.WriteLine("Module Number: {0}", hdd.ModuleNumber);

    Console.WriteLine("Serial Number: {0}", hdd.SerialNumber);

    Console.WriteLine("Firmware: {0}", hdd.Firmware);

    Console.WriteLine("Capacity: {0} M", hdd.Capacity);

    下面是全部代码:

    using System;

    using System.Runtime.InteropServices;

    using System.Text;

    namespace Sunmast.Hardware

    {

    [Serializable]

    public struct HardDiskInfo

    Ҷƪл˵?
  • һƪ.NET框架中的驱动程序应用技术
    һƪGOOGLE 提供的在线翻译 感谢GOOGLE提供