2
我們有以下代碼以檢索的硬盤ID處理器ID和MAC地址:WMI報告非唯一的處理器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個值。正如你可以想象的,這與我們的許可有所不同。
有沒有人見過這個或沒有人有更好的更可靠的機制?
感謝
嘗試添加到您的公式的'SerialNumber'和'Signature'值[Win32_DiskDrive](http://msdn.microsoft.com/en-us/library/windows/desktop/aa394132%28v=vs.85%29.aspx)WMI類。 – RRUZ 2012-03-23 03:34:07