如题: c# 无法获取 VMware 虚拟机的硬盘 ID
这个得怎么处理?
public static string GetDiskID()
{
try
{
String HDid = "";
ManagementClass mc = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
HDid = (string)mo.Properties["SerialNumber"].Value;
}
moc = null;
mc = null;
//string[] arr = Regex.Split(HDid, " ", RegexOptions.IgnoreCase);
return HDid.ToString().Trim();
}
catch
{
return "unknow";
}
finally
{
}
}
1
yksoft1 2018-11-08 13:49:38 +08:00
虚拟机的这个东西本身就不可靠,可以改的吧。。
|
2
JasonTsang OP @yksoft1 因为现在测试是在虚拟机上,程序就跑不起来 查了一下是因为硬盘无法获取到 ID。。。百度了一下 说因为虚拟机用的是 SCSI 接口。所以取不到,我是怕 软件发布后,还有人使用这种接口的硬盘。。
真不是因为稳不稳定的原因。。而且虚拟机也是非常稳定的 不存在不稳定一说。 |
3
yksoft1 2018-11-08 13:57:17 +08:00
@JasonTsang 稳定肯定是稳定,但是虚拟机上不能用这个来唯一确定一个系统吧。
另外实机也可能有一些特殊情况,比如网吧的无盘启动也可能取不到这个 ID 或者取到的没有唯一性 |
4
WeaPoon 2018-11-08 14:29:55 +08:00
如果你的软件涉及到绑定电脑(机器码)之类的,你最好还是建议用户不要在虚拟机上注册购买使用,因为硬件参数是随时都可以修改的,到时候机器码变来变去的。
至于硬盘 ID,应该有其他方法获取。 |
5
JasonTsang OP @WeaPoon 我想问 如果不在虚拟机上,现在实机的 还会有 SCSI 硬盘么?
|
6
WeaPoon 2018-11-08 15:13:10 +08:00
@JasonTsang #5 百度下 ,有获取的方法。
|
7
JasonTsang OP @WeaPoon 这么写有问题 所以使用 CPUID 来作为唯一识别码了
|