【发布时间】:2023-03-23 13:26:01
【问题描述】:
我使用硬盘驱动器序列号检查来注册我的产品。
但我发现有时它正在改变。 客户激活产品仅 2 周后,硬盘的 Serial-Num 就发生了变化。
这个属性可以改变吗?如果是这样,它是如何改变的以及为什么改变?
这是我在 VB 中使用的代码:
Dim WMIService As Object, Items As Object, SubItems As Object, temp
Set WMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
Set Items = WMIService.ExecQuery("Select * from Win32_PhysicalMedia", , 48)
For Each SubItems In Items
temp = SubItems.SerialNumber
If LenB(temp) Then Exit For
Next
和我在 C# 中使用的一样
using System.Management;
public string GetHDDSerial()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
foreach (ManagementObject wmi_HD in searcher.Get())
{
// get the hardware serial no.
if (wmi_HD["SerialNumber"] != null)
return wmi_HD["SerialNumber"].ToString();
}
return string.Empty;
}
【问题讨论】:
-
我说的是管理员用户,相同的用户,相同的电脑,相同的硬盘,但更改了序列号。
-
当然,也有明显的解释:硬盘序列号变了是因为硬盘变了。也许它有缺陷,用户更换了它,也许用户用更大或更快的更换了它。也许用户正在使用可移动媒体并定期交换它们。
-
请查看第一条评论
-
如果用户故意更改,他们可以raymond.cc/blog/…,但我不确定它是否可以自己更改
-
不确定选择语句的顺序,但如果您有多个驱动器,您的代码将返回第一个具有序列号的驱动器。也许用户有多个驱动器,或者添加了一个闪存驱动器 (USB)?