title: Generating a unique machine id
body: <p>I need to write a function that generates an id that is unique for a given machine running a Windows OS.</p>
  
  <p>Currently, I'm using WMI to query various hardware parameters and concatenate them together and hash them to derive the unique id. My question is, what are the suggested parameters I should use? 
  Currently, I'm using a combination of bios\cpu\disk data to generate the unique id. And am using the first result if multiple results are there for each metric.</p>
  
  <p>However, I ran into an issue where a machine that dual boots into 2 different Windows OS generates different site codes on each OS, which should ideally not happen.</p>
  
  <p>For reference, these are the metrics I'm currently using:</p>
  
  <pre><code>Win32_Processor:UniqueID,ProcessorID,Name,Manufacturer,MaxClockSpeed
  Win32_BIOS:Manufacturer
  Win32_BIOS:SMBIOSBIOSVersion,IdentificationCode,SerialNumber,ReleaseDate,Version
  Win32_DiskDrive:Model, Manufacturer, Signature, TotalHeads
  Win32_BaseBoard:Model, Manufacturer, Name, SerialNumber
  Win32_VideoController:DriverVersion, Name
  </code></pre>