下载此文档

如何得到硬盘序列号[C#].doc


文档分类:资格/认证考试 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
本文章转载 ,转载请保留版权本文章转载 ,转载请保留版权硬盘序列号( Serial Number )不等于卷标号( Volume Name ) ,后者虽然很容易得到,但是格式化分区后就会重写,不可靠。遗憾的是很多朋友往往分不清这一点。要得到硬盘的物理序列号,可以通过 WMI ,也就是 。可惜的是 Windows 98/ME 的 WMI 并不支持这个类,访问时会出现异常。受陆麟的例子的启发,我们还可以通过 . 接口,直接从 RING3 调用 API DeviceIoControl() 来获取硬盘信息, 而不需要写 VXD 或者 DRIVER 。这样这个问题就解决了, 我对它进行了封装, 大量使用了 P/Invoke 技术, 一个完整的 Library 。支持 Windows 98-2003 。使用上很简单: HardDiskInfo hdd = (0); // 第一个硬盘 ("Module Number: {0}", ); ("Serial Number: {0}", ); ("Firmware: {0}", ); ("Capacity: {0} M", ); 下面是全部代码: using System; using ; using ; namespace { [Serializable] public struct HardDiskInfo { /// <summary> /// 型号/// </summary> public string ModuleNumber; /// <summary> /// 固件版本/// </summary> public string Firmware; 本文章转载 ,转载请保留版权本文章转载 ,转载请保留版权/// <summary> /// 序列号/// </summary> public string SerialNumber; /// <summary> /// 容量,以 M 为单位/// </summary> public uint Capacity; } #region Internal Structs [StructLayout(, Pack=1)] internal struct GetVersionOutParams { public byte bVersion; public byte bRevision; public byte bReserved; public byte bIDEDeviceMap; public uint fCapabilities; [MarshalAs(, SizeConst=4)] public uint[] dwReserved; // For future use. } [StructLayout(, Pack=1)] internal struct IdeRegs { public byte bFeaturesReg; public byte bSectorCountReg; public byte bSectorNumberReg; public byte bCylLowReg; public byte bCylHighReg; public byte bDriveHeadReg; public byte bCommandReg; public byte bReserved; } [StructLayout(, Pack=1)] internal struct SendCmdInParams { 本文章转载 ,转载请保留版权本文章转载 ,转载请保留版权 public uint cBufferSize; public IdeRegs irDriveRegs; public byte bDriveNumber; [MarshalAs(, SizeConst=3)] public byte[] bReserved; [MarshalAs(Un

如何得到硬盘序列号[C#] 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yzhlya
  • 文件大小67 KB
  • 时间2017-02-24