That didn't fix the error on Win7 for some reason. It still fails on same line. I would suggest adding something like so...

 Code:
function IsSSD(optional $Letter)
  Dim $oWMI, $Instances, $Instance, $DiskNumber
  if val(@dos)>=6.2   ; Windows 8 or Higher
    if $letter=""
      $letter="C"
    endif
    if right($letter,1)=":"
      $letter=left($letter,1)
    endif
    $letter=ucase($letter)
    $oWMI = GetObject("WINMGMTS:\\.\ROOT\Microsoft\Windows\Storage")
    if @error = 0
      $Instances = $oWMI.InstancesOf("MSFT_PhysicalDisk", 1)
      $DiskNumber = GetObject("WINMGMTS:\\.\ROOT\Microsoft\Windows\Storage").ExecQuery("Select * from MSFT_Partition WHERE DriveLetter='" + $Letter + "'").ItemIndex(0).DiskNumber
      For Each $Instance In $Instances 
        if $instance.DeviceID=$DiskNumber
          if $instance.Mediatype=4 and $instance.SpindleSpeed=0
    	      $IsSSD=1
          endif
        endif
      Next
    endif
  endif
EndFunction