Jump to content
Sign in to follow this  
Danny35d

How to detect USB hard disk

Recommended Posts

Danny35d

I try to used DriveGetType ( "path" ) and check for "Removable" value but, when I plug my 60 Gb usb hard disk in some computer detected as "Removable" on others detected as "Fixed". Anybody knows a way to check if is a local hard disk or an attach usb hard disk.


AutoIt Scripts:NetPrinter - Network Printer UtilityRobocopyGUI - GUI interface for M$ robocopy command line

Share this post


Link to post
Share on other sites
GaryFrost

Win32_DiskDrive

InterfaceType

; Generated by AutoIt Scriptomatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$Output=""
$Output = $Output & "Computer: " & $strComputer  & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive", "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) then
   For $objItem In $colItems
;~       $Output = $Output & "Availability: " & $objItem.Availability & @CRLF
      $Output = $Output & "BytesPerSector: " & $objItem.BytesPerSector & @CRLF
      $strCapabilities = $objItem.Capabilities(0)
      $Output = $Output & "Capabilities: " & $strCapabilities & @CRLF
      $strCapabilityDescriptions = $objItem.CapabilityDescriptions(0)
      $Output = $Output & "CapabilityDescriptions: " & $strCapabilityDescriptions & @CRLF
      $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
;~       $Output = $Output & "CompressionMethod: " & $objItem.CompressionMethod & @CRLF
;~       $Output = $Output & "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
;~       $Output = $Output & "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
;~       $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
;~       $Output = $Output & "DefaultBlockSize: " & $objItem.DefaultBlockSize & @CRLF
      $Output = $Output & "Description: " & $objItem.Description & @CRLF
      $Output = $Output & "DeviceID: " & $objItem.DeviceID & @CRLF
;~       $Output = $Output & "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
;~       $Output = $Output & "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
;~       $Output = $Output & "ErrorMethodology: " & $objItem.ErrorMethodology & @CRLF
;~       $Output = $Output & "Index: " & $objItem.Index & @CRLF
;~       $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
      $Output = $Output & "InterfaceType: " & $objItem.InterfaceType & @CRLF
;~       $Output = $Output & "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
      $Output = $Output & "Manufacturer: " & $objItem.Manufacturer & @CRLF
;~       $Output = $Output & "MaxBlockSize: " & $objItem.MaxBlockSize & @CRLF
;~       $Output = $Output & "MaxMediaSize: " & $objItem.MaxMediaSize & @CRLF
      $Output = $Output & "MediaLoaded: " & $objItem.MediaLoaded & @CRLF
      $Output = $Output & "MediaType: " & $objItem.MediaType & @CRLF
;~       $Output = $Output & "MinBlockSize: " & $objItem.MinBlockSize & @CRLF
      $Output = $Output & "Model: " & $objItem.Model & @CRLF
      $Output = $Output & "Name: " & $objItem.Name & @CRLF
;~       $Output = $Output & "NeedsCleaning: " & $objItem.NeedsCleaning & @CRLF
;~       $Output = $Output & "NumberOfMediaSupported: " & $objItem.NumberOfMediaSupported & @CRLF
      $Output = $Output & "Partitions: " & $objItem.Partitions & @CRLF
;~       $Output = $Output & "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
;~       $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
;~       $Output = $Output & "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
;~       $Output = $Output & "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
;~       $Output = $Output & "SCSIBus: " & $objItem.SCSIBus & @CRLF
;~       $Output = $Output & "SCSILogicalUnit: " & $objItem.SCSILogicalUnit & @CRLF
;~       $Output = $Output & "SCSIPort: " & $objItem.SCSIPort & @CRLF
;~       $Output = $Output & "SCSITargetId: " & $objItem.SCSITargetId & @CRLF
      $Output = $Output & "SectorsPerTrack: " & $objItem.SectorsPerTrack & @CRLF
      $Output = $Output & "Signature: " & $objItem.Signature & @CRLF
      $Output = $Output & "Size: " & $objItem.Size & @CRLF
      $Output = $Output & "Status: " & $objItem.Status & @CRLF
;~       $Output = $Output & "StatusInfo: " & $objItem.StatusInfo & @CRLF
;~       $Output = $Output & "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
      $Output = $Output & "SystemName: " & $objItem.SystemName & @CRLF
      $Output = $Output & "TotalCylinders: " & $objItem.TotalCylinders & @CRLF
      $Output = $Output & "TotalHeads: " & $objItem.TotalHeads & @CRLF
      $Output = $Output & "TotalSectors: " & $objItem.TotalSectors & @CRLF
      $Output = $Output & "TotalTracks: " & $objItem.TotalTracks & @CRLF
      $Output = $Output & "TracksPerCylinder: " & $objItem.TracksPerCylinder & @CRLF
      if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
      $Output=""
   Next
Else
   Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_DiskDrive" )
Endif


;~ Func WMIDateStringToDate($dtmDate)

;~  Return (StringMid($dtmDate, 5, 2) & "/" & _
;~  StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
;~  & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
;~ EndFunc
Edited by gafrost

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites
Danny35d

InterfaceType

Thanks a lot. This is the second time that your SAVE me. Next time that I'm doing training in Tennessee I will buy you a beer... :P

AutoIt Scripts:NetPrinter - Network Printer UtilityRobocopyGUI - GUI interface for M$ robocopy command line

Share this post


Link to post
Share on other sites
Pieter

... or you could place an .ini file in the root of the drive and do this:

If FileExists("D:\MyIni.ini") Then
    $drivemounted = "yes"
EndIf
Additionaly, you can insert a unique string in that file to be able to seperate the drive from others. In that case, you need to do something like this:
If FileExists("D:\MyIni.ini") Then
        $unique_id = IniRead("D:\MyIni.ini", "general", "unique_id", "error")
        If $unique_id = "fsg651g" Then
             $drivemounted = "yes"
        ElseIf $unique_id = "error" Then
             MsgBox(0,"Error","Error, ID not defined!")
                         $drivemounted = "no"
                Else
                         $drivemounted = "no"
        EndIf
EndIf

Edited by Pieter

iPod + Online calendars = iPodCALsync

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×