起初看起来这可能是一个非常简单的问题,有些机构可能会试图给我建议尝试谷歌,也可能是这样 . 但对我来说,我很难尝试Google,Stack Overflow并且找不到任何好的解决方案 .
只想用C#获取硬盘或硬盘的序列号
请仔细阅读:硬盘的序列号,但不是硬盘卷的序列号(例如C,D,E等) .
为了获得硬盘卷的序列号,我在网上找到了解决方案并且工作正常,但问题在于获取硬盘的序列号 .
有些机构可能会尝试将此问题作为下面的“放样溢出”问题的副本,或者可能会建议该问题的链接 . 但事实并非如此
并且以下任何问题都没有为C#中的这个问题提供良好的解决方案:
5 回答
这是最终的解决方案:
Get Physical HDD Serial Number without WMI
写这么多代码:
别忘了添加对
DriveInfoEx.dll
的引用 .看到这个
只需从那里下载演示并选择“数据存储”选项卡并从中选择Win32_DiskDrive,您将获得下面提到的所有磁盘驱动器(HardDisk)的信息,并在sectorpertrack之后和签名属性之前查看一个属性“SerialNumber”...
我发现的最好方法是:
从here下载.dll
将.dll添加到项目中
添加此代码:
[DllImportAttribute("HardwareIDExtractorC.dll")]
public static extern String GetIDESerialNumber(byte DriveNumber);
GetIDESerialNumber(0).Replace(" ", string.Empty);
注意:转到资源管理器中的dll属性并将
Build Action
设置为Embedded Resource
.我看了ILSpy(http://ilspy.net/)到System.IO.DriveInfo类,我发现这个代码似乎工作正常: