我爱Aspx >> Asp.Net >> 如何得到硬盘序列号.net [C#]硬盘序列号(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
Ҷƪл˵?
ASP.NET中利用存储过程实现模糊查..[05-20]
ASP.NET之精通弹出窗口[05-20]
ASP.NET中用healthMonitor属性用..[05-20]
Asp.net中处理共享Session的问题[05-20]
ASP.NET应用程序设计的10大技巧[05-20]
ASP.NET 中防止 Access 数据库被..[05-20]
ASP.NET保持用户状态的九种选择(..[05-20]
asp.net URL重写续[05-20]
C#编程规范 Version 2.0 东软集团..[05-20]
操作Excel(C#)[05-20]
GOOGLE 提供的在线翻译 感谢GOOG..[05-20]
GOOGLE 提供的在线翻译 感谢GOOG..[05-20]
回车键提交表单(点击按钮)[05-20]
ASP.NET中利用存储过程实现模糊查..[05-20]
ASP.NET之精通弹出窗口[05-20]
CSS的技巧[05-20]
ASP.NET中用healthMonitor属性用..[05-20]
CSS的技巧[05-20]
八大法则防范ASP网站漏洞[05-20]
最好的在线配色器[05-20]