【发布时间】:2012-03-23 02:23:12
【问题描述】:
我们有以下代码来检索硬盘 id 处理器 id 和 mac 地址:
private static string GetWMIValue(string query, string propertyName)
{
try
{
using (ManagementObjectSearcher search = new ManagementObjectSearcher(query))
{
using (ManagementObjectCollection results = search.Get())
{
foreach (var result in results)
{
if (result != null && result[propertyName] != null)
{
return result[propertyName].ToString();
}
}
}
}
}
catch
{
// do nothing.
}
return null;
}
public static string GetHardDriveSerialNumber()
{
string driveLetterName = Assembly.GetExecutingAssembly().Location.Substring(0, 1);
return GetWMIValue("SELECT VolumeSerialNumber FROM Win32_LogicalDisk WHERE DeviceID=\"" + driveLetterName + ":\"", "VolumeSerialNumber");
}
public static string GetProcessorId()
{
return GetWMIValue("SELECT ProcessorId FROM Win32_Processor", "ProcessorId");
}
public static string GetMacAddress()
{
return GetWMIValue("SELECT MacAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE", "MacAddress");
}
除了在一个特定品牌的平板电脑上(据我们所知)外,它运行良好。在这个品牌上,每台机器都有相同的 3 个值。您可以想象,这在一定程度上影响了我们的许可。
有没有人见过这个或者有没有更好更可靠的机制?
谢谢
【问题讨论】:
-
尝试将Win32_DiskDrive WMI 类的
SerialNumber和Signature值添加到您的公式中。