c# 无法获取 VMware 虚拟机的硬盘 ID

2018-11-08 13:46:43 +08:00
 JasonTsang

如题: 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
            {


            }

        }
4392 次点击
所在节点    C#
7 条回复
yksoft1
2018-11-08 13:49:38 +08:00
虚拟机的这个东西本身就不可靠,可以改的吧。。
JasonTsang
2018-11-08 13:55:38 +08:00
@yksoft1 因为现在测试是在虚拟机上,程序就跑不起来 查了一下是因为硬盘无法获取到 ID。。。百度了一下 说因为虚拟机用的是 SCSI 接口。所以取不到,我是怕 软件发布后,还有人使用这种接口的硬盘。。

真不是因为稳不稳定的原因。。而且虚拟机也是非常稳定的 不存在不稳定一说。
yksoft1
2018-11-08 13:57:17 +08:00
@JasonTsang 稳定肯定是稳定,但是虚拟机上不能用这个来唯一确定一个系统吧。
另外实机也可能有一些特殊情况,比如网吧的无盘启动也可能取不到这个 ID 或者取到的没有唯一性
WeaPoon
2018-11-08 14:29:55 +08:00
如果你的软件涉及到绑定电脑(机器码)之类的,你最好还是建议用户不要在虚拟机上注册购买使用,因为硬件参数是随时都可以修改的,到时候机器码变来变去的。
至于硬盘 ID,应该有其他方法获取。
JasonTsang
2018-11-08 14:58:08 +08:00
@WeaPoon 我想问 如果不在虚拟机上,现在实机的 还会有 SCSI 硬盘么?
WeaPoon
2018-11-08 15:13:10 +08:00
@JasonTsang #5 百度下 ,有获取的方法。
JasonTsang
2018-11-08 19:49:09 +08:00
@WeaPoon 这么写有问题 所以使用 CPUID 来作为唯一识别码了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/505748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX