Tag: 序列号

转换WMI HDD序列号

我有一些代码从WMI获取硬盘序列号。 SelectQuery selectQuery = new SelectQuery(“Win32_PhysicalMedia”); ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery); foreach (ManagementObject wmi_PM in searcher.Get()) { string str = wmi_PM[“SerialNumber”]; } 起初我以为它正在工作并检索到正确的序列号。 在尝试使用它进行比较之后,我发现WMI报告的数字并不完全正确。 WMI序列号用一堆空格填充,并且字符被转置。 贴纸上打印并由某些工具(可能使用DeviceIoControl)返回的实际驱动器序列号为“3RH8B1BG”,但WMI返回“R38H1BGB”。 Real Serial#:3RH8B1BG WMI Serial#:R38H1BGB 一些工具,如SiSoftware Sandra,返回这个填充和转置的数字,但它不是实际的序列号。 如果您转换每个其他位置,WMI值是序列号。 这是正常的吗? 我应该只编码将其转换为正确的值吗? 我试图避免使用WMI,但似乎任何搜索如何在网上做某事现在带回WMI示例。 不同制造商的2个不同硬盘的WMI值序列号都被转置,因此它不是单个磁盘。 更新:使用DeviceIoControl找到一些代码 http://addressof.com/blog/archive/2004/02/14/392.aspx 令人惊讶的是,DeviceIoControl也返回转置的序列号。 在上面的CorySmith代码中,它有一个SwapChars函数 Private Shared Function SwapChars(ByVal chars() As Char) As String For i As Integer = […]

硬盘或硬盘的序列号

起初看起来这可能是一个非常简单的问题,有些机构可能会试图给我建议尝试谷歌,可能是这样。 但对我来说,我很难尝试谷歌,Stack Overflow并且找不到任何好的解决方案。 只想使用C#获取硬盘或硬盘的序列号 请仔细阅读:硬盘的序列号,但不是硬盘卷的序列号(例如C,D,E等)。 为了获得硬盘卷的序列号,我在网上找到了解决方案并且工作正常,但问题在于获取硬盘的序列号。 有些机构可能会尝试将此问题作为下面的Stake Overflow问题的副本,或者可能会建议该问题的链接。 但事实并非如此 并且以下任何问题都没有为C#中的这个问题提供良好的解决方案: 如何在C#中获取Hard-Disk SerialNumber(无WMI)? 如何在.net中检索硬盘固件序列号? 硬件序列号