
如题: 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 来作为唯一识别码了 |