Sign in to follow this  
Followers 0
Danny35d

How to detect USB hard disk

5 posts in this topic

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



#2 ·  Posted (edited)

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

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

#5 ·  Posted (edited)

... 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  
Followers 0