2012-03-23 6 views
2

を報告します。WMIは、我々はハードドライブのIDプロセッサIDおよびMACアドレスをretriveするために、次のコードを持っている非ユニークなプロセッサ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つの値を持っています。あなたが想像することができるように、これは私たちのライセンスでややねじ込みます。

誰もこれを見たことがありますか、誰かがより信頼性の高いメカニズムを持っていますか?

おかげ

+0

あなたの式に 'SerialNumber'との' Signature'値を追加してみてください[Win32_DiskDrive](http://msdn.microsoft.com/en-us/library/windows/desktop/aa394132%28v=vs.85%29.aspx)WMIクラス。 – RRUZ

答えて

0

これはよくあるものの知っていて、問題の話として、それが表示されますもう少し研究の後。私は

はありがたいことに、これは私はちょうどそれを修正する必要が:)私の混乱はなかった...いくつかの作業を行う必要があります:(