这是我依靠Win32_ComputerSystemProduct
结构检索主板UUID的方法。
#region "UUID"
public static string getUUID()
{
string UUID = string.Empty;
try
{
ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
UUID = mo.Properties["UUID"].Value.ToString();
break;
}
UUID = "";
if (UUID.Equals(string.Empty)
|| UUID.Equals("")
|| UUID.Equals(null)
|| UUID.Equals("FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF")
|| UUID.Equals("00000000-0000-0000-0000-000000000000"))
{
throw new System.Exception("UUID is invalid.");
}
return UUID;
}
catch (Exception ex)
{
Console.WriteLine("Error Message: " + ex.Message);
}
return UUID;
}
#endregion
我有一个内置的异常处理程序,如果字符串是我列出的字符串,则抛出错误,因为C#隐含地不知道像FFF...FFF
这样的字符串是无效/错误。
我重新定义了UUID = "";
以测试此方法,例如,如果运行此脚本的用户具有空白UUID。
我在想 - 这是正确的方法吗?我不确定return UUID
仍然会返回UUID,即使它是空白的,或FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
。
答案 0 :(得分:0)
对于初学者,在if语句之前,将UUID设置为null。
接下来,你的if应该是这样的:
if (String.IsNullorEmpty(UUID)
|| UUID.Equals("FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF")
|| UUID.Equals("00000000-0000-0000-0000-000000000000"))
{
throw new System.Exception("UUID is invalid.");
}
return UUID;
除此之外,整个if语句应该在foreach
。