【发布时间】:2015-01-09 16:38:16
【问题描述】:
我需要获取硬盘驱动器的序列号作为唯一 ID 用于用户识别,但是当我尝试访问序列号时程序崩溃:
System.Management.dll 中出现“System.Management.ManagementException”类型的未处理异常
附加信息:无效的命名空间
我环顾四周,似乎没有太多关于这个问题的信息; one website 提到“WMI 就像死亡谷”,我倾向于同意这一点。
错误发生在moHD.[Get]()。
为什么会出现此错误,我该如何解决?
代码:
Public Function getSerial(ByVal strDrive As String) As String 'Get HD Serial Number
If strDrive = "" OrElse strDrive Is Nothing Then
strDrive = "C"
End If
Dim moHD As New ManagementObject("Win32_LogicalDisk.DeviceID=""" + strDrive + ":""")
moHD.[Get]()
Return moHD("VolumeSerialNumber").ToString()
End Function
【问题讨论】:
-
这不是关于弃用的 API - 它是关于一个非常稀缺的颠覆,不需要单独的标签。如果您绝对需要 .net 标签,请使用 .net-4.5,但是为在 interweebs 上几乎不可能找到的东西创建整个标签是完全没有意义的。来自标签创建特权:“您应该始终偏爱现有标签;仅当您认为您的问题确实涵盖了以前没有人问过的新主题时才创建新标签这个网站。” - 4.5 已经存在,如果更相关的话,4.6 也是如此。
-
@Zoe 我没有创建那个标签(除非它被烧毁并且我回滚编辑重新创建了它,在这种情况下我没有被系统警告过),但我'已经编辑了我的问题以删除一些绒毛并将标签替换为.net-4.5(当我问这个问题时,4.6 不存在,所以看不到任何使用它的理由)。
标签: vb.net namespaces wmi .net-4.5