using System.Management;
using System.Text;
namespace Common
{
public static class Workstation
{
public static string GenerateWorkstationId()
{
ManagementObjectSearcher _searcher = new ManagementObjectSearcher();
StringBuilder _value = new StringBuilder();
/* processors */
_searcher.Query = new ObjectQuery("select * from Win32_Processor");
foreach (ManagementObject _object in _searcher.Get())
{
_value.Append(ManagmentObjectPropertyData(_object.Properties["ProcessorId"]));
_value.Append(',');
}
/* baseboard */
_searcher.Query = new ObjectQuery("select * from Win32_BaseBoard");
foreach (ManagementObject _object in _searcher.Get())
{
_value.Append(ManagmentObjectPropertyData(_object.Properties["Product"]));
_value.Append(',');
}
return CryptoHelper.CalculateMD5Hash(_value.ToString());
}
private static string ManagmentObjectPropertyData(PropertyData data)
{
string _result = string.Empty;
if (data.Value != null && !string.IsNullOrEmpty(data.Value.ToString()))
{
switch (data.Value.GetType().ToString())
{
case "System.String[]":
string[] _str = (string[])data.Value;
foreach (string _st in _str)
_result += _st + " ";
break;
case "System.UInt16[]":
ushort[] _shortData = (ushort[])data.Value;
foreach (ushort _st in _shortData)
_result += _st + " ";
break;
default:
_result = data.Value.ToString();
break;
}
}
return _result;
}
}
}